没有合适的资源?快使用搜索试试~ 我知道了~
首页SQL 数据分析:销售数据的小计/合计/总计以及数据透视表
文章目录小计、合计与总计多维度交叉统计自定义统计维度数据透视表总结 学习过 SQL 的人都知道,使用聚合函数(AVG、SUM、COUNT、MIN/MAX 等)和分组操作(GROUP BY)可以对数据进行基本的统计分析,例如统计公司员工的人数、每个部门的平均月薪等。如果想要回顾这些基础概念,可以参考这篇文章。 不过 SQL 不仅仅能够进行这些基本的分组汇总,它还提供了许多高级的统计分析功能。本文就来介绍一下如何使用 SQL 实现销售数据的小计、合计、总计以及多维度交叉统计和数据透视表。我们首先列出这些功能在主流数据库中的支持情况: 功能 Oracle MySQL SQL Server Po
资源详情
资源评论
资源推荐

SQL 数据分析:销售数据的小计数据分析:销售数据的小计/合计合计/总计以及数据透视表总计以及数据透视表
文章目录文章目录小计、合计与总计多维度交叉统计自定义统计维度数据透视表总结
学习过 SQL 的人都知道,使用聚合函数(AVG、SUM、COUNT、MIN/MAX 等)和分组操作(GROUP BY)可以对数据进行基本的统计分析,例如统计公司员工的人数、每个部门
的平均月薪等。如果想要回顾这些基础概念,可以参考这篇文章。
不过 SQL 不仅仅能够进行这些基本的分组汇总,它还提供了许多高级的统计分析功能。本文就来介绍一下如何使用 SQL 实现销售数据的小计、合计、总计以及多维度交叉统计和数
据透视表。我们首先列出这些功能在主流数据库中的支持情况:
功能功能 Oracle MySQL SQL Server PostgreSQL
GROUP BY ✔️ ✔️ ✔️ ✔️
GROUP BY ROLLUP ✔️ ✔️* ✔️ ✔️
GROUP BY CUBE ✔️ ✔️ ✔️
GROUP BY GROUPING
SETS
✔️ ✔️ ✔️
数据透视表数据透视表 ✔️ ✔️ ✔️ ✔️
* 参考下文中的具体讨论。本文使用的示例数据可以点此下载,如果没有特殊说明,以下示例适用于上面的 5 种数据库。
小计、合计与总计小计、合计与总计
我们先查看一下示例表中的数据:
select * from sales_data;
saledate |product |channel |amount |
----------|---------|---------|-------|
2019-01-01|桔子 |淘宝 |1864.00|
2019-01-01|桔子 |京东 |1329.00|
2019-01-01|桔子 |店面 |1736.00|
2019-01-01|香蕉 |淘宝 |1573.00|
2019-01-01|香蕉 |京东 |1364.00|
2019-01-01|香蕉 |店面 |1178.00|
2019-01-01|苹果 |淘宝 | 511.00|
2019-01-01|苹果 |京东 | 568.00|
2019-01-01|苹果 |店面 | 847.00|
这是一个模拟的销售数据,记录了不同日期(2019-01-01 到 2019-06-30)、三种不同产品、三种不同渠道的销量情况。
以下语句使用GROUP BY统计了三种不同产品各自的总销量:
select product, sum(amount)
from sales_data
group by product;
product |sum(amount)|
---------|-----------|
桔子 | 909261.00|
香蕉 | 925369.00|
苹果 | 937052.00|
显然,还可以编写 SQL 语句统计三种不同产品在不同渠道各自的销量合计、所以产品的销量总计等。但是如何一次获取这些按照不同维度进行统计的结果呢?我们可以使用GROUP
BY的第一个扩展选项:ROLLUP。例如:
-- Oracle、SQL Server、PostgreSQL
select product "产品", channel "渠道", sum(amount) "销量"
from sales_data
group by rollup (product, channel);
产品|渠道|销量 |
----|----|----------|
桔子|店面| 294680.00|
桔子|京东| 311799.00|
桔子|淘宝| 302782.00|
桔子|NULL| 909261.00|
苹果|店面| 306643.00|
苹果|京东| 318614.00|
苹果|淘宝| 311795.00|
苹果|NULL| 937052.00|
香蕉|店面| 311445.00|
香蕉|京东| 306033.00|
香蕉|淘宝| 307891.00|
香蕉|NULL| 925369.00|
NULL|NULL|2771682.00|
其中,ROLLUP表示先按照 (product, channel) 的组合计算不同产品、不同渠道的销量小计,然后按照计算不同产品(product)、所有渠道的销量和计(结果中的 channel 字段显示为
NULL),最后计算所有产品、所有渠道的销量总计(结果中的 product 和 channel 字段都为 NULL)。


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0