返回

SQL 知识点进阶:从嵌套查询到窗口函数,打造数据分析利器

后端

SQL知识点训练12:嵌套查询、窗口函数、分组统计和求和函数实战解析

1. 嵌套查询

嵌套查询是指在另一个查询内部执行查询。嵌套查询通常用于从不同的表中提取数据,并根据某些条件将这些数据组合在一起。嵌套查询有两种基本类型:子查询和相关查询。

子查询是一个独立的查询,其结果集作为另一个查询的输入。相关查询是指两个查询之间存在某种关系,例如外键关系或主从表关系。相关查询通常使用 WHERE 子句来连接两个查询。

2. 窗口函数

窗口函数是一种在数据集合中对一组行执行计算的函数。窗口函数通常用于计算汇总统计数据,例如求和、求平均值或求最大值。窗口函数可以应用于单个表或多个表。

窗口函数有许多不同的类型,每种类型都有其独特的用法。例如,ROW_NUMBER() 函数可以为每一行生成一个唯一的行号,RANK() 函数可以根据某个字段的值对行进行排名,而 LEAD() 函数可以获取当前行之后的第一行的数据。

3. 分组统计

分组统计是指根据某个字段的值将数据分组,然后对每个组执行汇总计算。分组统计通常用于分析数据中的趋势和模式。分组统计可以使用 GROUP BY 子句来实现。

GROUP BY 子句指定要根据哪个字段将数据分组。在 GROUP BY 子句之后,可以使用聚合函数(例如 SUM()、AVG() 或 MAX())来对每个组执行计算。

4. 求和函数

求和函数用于计算一组数字的总和。求和函数有许多不同的类型,每种类型都有其独特的用法。例如,SUM() 函数可以计算一组数字的总和,而 SUMIF() 函数可以根据某个条件计算一组数字的总和。

求和函数通常用于分析数据中的总量和趋势。求和函数也可以用于计算平均值、最大值和最小值。

实战案例

让我们通过一个实战案例来演示嵌套查询、窗口函数、分组统计和求和函数的用法。

假设我们有一个包含以下数据的表:

CREATE TABLE Sales (
  id INT PRIMARY KEY,
  product_id INT,
  quantity INT,
  price DECIMAL(10, 2)
);

INSERT INTO Sales (id, product_id, quantity, price) VALUES
  (1, 1, 10, 10.00),
  (2, 1, 5, 10.00),
  (3, 2, 20, 20.00),
  (4, 2, 15, 20.00),
  (5, 3, 10, 30.00),
  (6, 3, 5, 30.00);

问题:

找出每种产品的总销售额。

解决方案:

我们可以使用以下查询来解决这个问题:

SELECT product_id, SUM(quantity * price) AS total_revenue
FROM Sales
GROUP BY product_id;

这个查询首先使用 GROUP BY 子句将数据根据 product_id 字段分组。然后,它使用 SUM() 函数计算每个组的总销售额。最后,它使用 SELECT 子句选择 product_id 和 total_revenue 字段。

结果:

+------------+---------------+
| product_id | total_revenue |
+------------+---------------+
| 1          | 150.00       |
| 2          | 600.00       |
| 3          | 300.00       |
+------------+---------------+

这个查询结果显示,产品 1 的总销售额为 150.00 美元,产品 2 的总销售额为 600.00 美元,产品 3 的总销售额为 300.00 美元。

总结

嵌套查询、窗口函数、分组统计和求和函数都是非常强大的 SQL 工具。这些工具可以帮助您从数据中提取有价值的洞察,并做出更好的决策。

如果您想成为一名数据分析高手,那么掌握这些 SQL 知识点是非常必要的。