SQL 知识点进阶:从嵌套查询到窗口函数,打造数据分析利器
2023-09-02 16:59:56
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 知识点是非常必要的。