SQL数据分析基础

数据分析领域,SQL是一种被广泛使用的技能。全球的分析师都依赖于SQL来进行他们的分析工作。本文将介绍使用SQL进行数据分析的基础知识。

排序(ORDER BY)

排序关键字ORDER BY用于根据特定列的值对记录进行排序。它允许将记录按升序和降序排列。例如,假设有一个名为“订单”的表,其中包含了销售记录。让查看这个表中的数据。

SELECT * FROM 订单 LIMIT 10;

输出结果将如下所示:该表包含了买家(USER_ID)、他们购买的产品(PRODUCT_ID)、消费金额(SUBTOTAL和TOTAL)、数量以及购买日期等信息。

让将这些记录按照消费金额降序排列,这样最高消费的订单就会排在最上面,而较小的订单则会排在下面。将使用ORDER BY和DESC关键字来实现这一点。

SELECT * FROM 订单 ORDER BY Total DESC;

输出结果将如下所示:现在记录已经按照订单总额的降序排列。如果想查看按升序(升序)排列的记录,可以使用ASC关键字后跟ORDER BY。或者,可以省略ASC关键字,SQL默认会按升序排列记录。

分组(GROUP BY)与聚合函数

GROUP BY语句用于根据特定列的值对记录进行分组。例如,可以将所有特定用户的记录分组在一起,然后在上面使用聚合函数(SUM、AVG、COUNT、MAX、MIN)。

让尝试查看每个用户的平均订单价值。将使用GROUP BY语句和AVG函数来实现这一点。同时,将它们按照平均订单价值的降序排列。

SELECT User_id, AVG(Total) AS "平均订单价值" FROM 订单 GROUP BY User_id ORDER BY AVG(Total) DESC;

输出结果将如下所示:可以看到平均订单价值最高的用户排在最上面。

聚合函数经常与GROUP BY语句一起使用。让再看一个例子来更好地理解。让看看每个用户下了多少订单。为此,将使用GROUP BY语句和COUNT函数。

SELECT User_id, COUNT(*) AS "订单数量" FROM 订单 GROUP BY User_id;

COUNT(*)将计算与每个USER_ID相关的记录数量。输出结果将如下所示:可以看到与每个用户相关的订单数量。

连接查询(JOINS)

SQL中的JOIN允许根据共同的列(字段)连接两个或多个表。JOIN非常有用,因为它们帮助将多个表中的数据合并到单个输出中。让用一个例子来理解这一点。

订单表包含了客户的订单信息。产品表包含了不同产品的信息。让连接这两个表。

SELECT User_id, Total, Discount, Product_id, Vendor, Price, Rating FROM 订单 JOIN 产品 ON 订单.Product_id = 产品.id;

JOIN子句允许将订单表与产品表连接在共同的列上。ON子句让指定应该在哪些列上连接表。

输出结果将如下所示:可以看到订单表已经与产品表连接。可以看到来自两个表的列一起出现在单个输出中。

还可以将JOIN与GROUP BY语句或ORDER BY关键字结合起来,进行更有意义的分析。让看一个例子。

将查看不同用户花费的总金额,以及他们购买的产品的总成本。然后将记录按照用户花费的总金额降序排列。

SELECT User_id, SUM(Total) AS "总花费", SUM(Price) AS "总成本", AVG(Rating) AS "平均评分" FROM 订单 JOIN 产品 ON 订单.Product_id = 产品.id GROUP BY User_id ORDER BY SUM(Total) DESC;

输出结果将如下所示:已经将订单和产品两个表结合起来,然后在同一查询中使用了GROUP BY语句和ORDER BY来查看不同用户花费的总金额和购买的产品的总成本。

连接查询的类型

连接查询可以用多种方式使用,以解决不同的业务用例。SQL中有5种主要的连接类型。

  1. INNER JOIN:内连接返回两个表中连接条件满足的所有记录。
  2. LEFT (OUTER) JOIN:左连接返回左表中的所有记录,并匹配右表中的记录。
  3. RIGHT (OUTER) JOIN:右连接返回右表中的所有记录,并匹配左表中的记录。右连接的工作方式与左连接相似。
  4. FULL (OUTER) JOIN:全连接返回两个表中的所有记录。
  5. SELF JOIN:自连接用于将表与自身连接。在某些用例中非常有用。

来源:

WHERE与LIKE

WHERE语句帮助根据列中的值过滤记录。让看一个例子来看看它是如何工作的。将查看总金额超过100的订单。

SELECT * FROM 订单 WHERE Total > 100;

输出结果将如下所示:结果只包含总金额超过100的订单。

LIKE操作符与WHERE语句一起使用,用于在列中查找模式。还可以与LIKE操作符一起使用通配符(如%和_)。%符号代表0个或多个字符。_符号代表恰好1个字符。

如果想过滤包含“鞋子”的产品名称的记录,可以使用LIKE操作符。

SELECT * FROM 产品 WHERE Title LIKE '%Shoes%';

输出结果将如下所示:所有记录的标题中都包含“鞋子”。LIKE操作符在列包含字符串值时非常有用。

AND和OR操作符用于组合多个条件。例如,如果想过滤包含鞋子的产品标题且价格低于50的记录,可以使用AND操作符。

SELECT * FROM 产品 WHERE Title LIKE '%Shoes%' AND Price < 50;

这将过滤出产品标题包含鞋子且价格低于50的记录。输出结果只包含同时满足这两个条件的记录。输出结果将如下所示:

输出结果只包含3条记录。好吧,猜怎么着,鞋子很贵!

如果想过滤价格低于25或评分高于4.5的记录,可以使用OR操作符。

SELECT * FROM 产品 WHERE Price < 25 OR Rating > 4.5;
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485