第十章 数据排序与分组
1.数据分组
数据分组是按照逻辑次序把具有重复值的字段进行合并。
2.GROUP BY 子句
(1)分组函数
典型的分组函数-也就是用于GROUP BY子句对数据进行划分的函数-包括AVG,MAX,MIN,SUM,COUNT。他们是第9章介绍的汇总函数,当时他们是用于单个值,现在他们将用于分组值。
(2)对选中的数据进行分组
被选中的字段(查询中SELECT之后的字段列表)才能在GROUP BY子句里引用,如果字段在SELECT语句里找不到,就不能用于GROUP BY子句。
(3)创建分组和使用汇总函数
SELECT语句在使用GROUP BY子句的时必须满足一定条件。特别是被选中的字段必须出现在GROUP BY子句里,除了汇总函数。
GROUP BY子句里的字段不必与SELECT子句里的字段具有相同的次序。只要SELECT子句的字段名称是符合条件的,它的名称就必须出现在GROUP BY子句里。
(4)可以以整数代表字段名称
3.GROUP BY 和 ORDER BY
GROUP BY子句也可以和ORDER BY子句一样用于数据排序。
用GROUP BY子句实现排序的区别与缺点是:
所有被选中的,非汇总函数的字段必须列在GROUP BY子句里
除非需要使用汇总函数,否则使用GROUP BY子句排序通常是没有必要的。
4.CUBE和ROLLUP
关于CUBE和ROLLUP详见SQL笔记(10)_2_CUBE,ROLLUP,HAVING
5.HAVING子句
Having子句在SELECT子句里与GROUP BY子句联合使用时,用于高速GROUP BY子句在输出里包含哪些分组。Having对GROUP BY的作用相当于WHERE对于SELECT的作用。换句话说,WHERE子句设定被选择字段的条件,而Having子句设置GROUP BY子句形成分组的条件。因此,使用使用Having子句可以让结果包含或是去除整租数据。
SELECT FROM WHERE GROUP BY HAVING ORDER BY
Having子句必须跟在GROUP BY子句之后,ORDER BY子句之前。
PS: