分组与聚合
SQL 提供了分组和聚合的方法,分组就是按照一定的条件把表格划分为若干的行,而聚合就是重新将这些行聚合为一些信息。
分组
分组依赖的是 GROUP BY 关键字,它会按列的取值对行进行等价类划分。
例如,GROUP BY department 就是按 department 字段的取值进行分组。
分组后必定伴随着聚合,因此出现 GROUP BY 关键字后,SELECT 的对象要么是 GROUP BY 里出现的列名(此时同一组的该列取值都相同),要么伴随着聚合函数。
SELECT dept, COUNT(*) FROM Employee GROUP BY dept;
--- SELECT dept, name FROM Employee GROUP BY dept; <- 错误写法,name 既不是 dept 也不是聚合对象
聚合函数
常见的有:
COUNT:计数,有三种用法COUNT(*)表示计算分组行数COUNT(col)表示计算列col取值非NULL的行数COUNT(DISTINCT col)表示计算列col取值非NULL并去重的取值数
SUMAVGMIN和MAX
DISTINCT 可以出现在聚合函数里面,表示聚合时去除重复值,例如 SUM(DISTINCT score) 就是将所有不重复的 score 相加。
PARTITION
PARTITION BY 关键字可以配合窗口函数一起使用,这个关键字的特点是不会将不同的组压缩成一行,会保留所有原始行数据
BEYOND THE ARTICLE
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。
— 本文完 — 返回文章列表