跳至正文

【格物致知52】SQL中的“层级”(order)与问题的层次(level)

XILEJUN
喜乐君 Tableau Visionary ✦ 5
📊 业务数据分析「专家」· 敏捷 BI 布道师
📚 《数据可视化分析》《业务可视化分析》多本书作者
🎓 中国地质大学(武汉)经管学院 MBA 校外导师
🤝 以 Tableau 会友,致力于构建业务分析通识框架

📚 本文配套课程 · 数据可视化分析系列

🎬 B 站课程:数据可视化分析:Tableau/SQL 原理与实践  —  https://www.bilibili.com/cheese/play/ss8093


近期阅读MICK的《SQK进阶教程》,做到最后一小节“SQL中的层级”(2.10),内心视为一震。我是没有料到这个话题的。

作者从一个众所周知的命题开始,解释了它背后的原理。问题是:

“在SQL中使用GROUP BY聚合之后,不能引用原表中除聚合键之外的列?”

MICK

还是用superstore超市数据举个例子,可以使用Excel透视表计算“不同类别的销售额总和”,或者使用SQL的聚合查询完成。

在这个简单的问题中,“类别”是分类,“销售额总和”是答案(注意,不是“销售额”是答案,而是聚合是答案)。使用如下的SQL轻松完成:

SELECT 类别,SUM(‘销售额’)

FROM superstore

GROUP BY 类别

如果把它改为如下的查询,程序就会出错,它违反了标准SQL的规定。

SELECT 类别,SUM(‘销售额’)

FROM superstore

GROUP BY 类别