聚集函数都有哪些
COUNT(role_assist)会忽略值为 NULL 的数据行,而 COUNT(*) 只是统计数据行数,不管某个字段是否为 NULL。
**
需要说明的是 AVG、MAX、MIN 等聚集函数会自动忽略值为 NULL 的数据行,MAX 和 MIN 函数也可以用于字符串类型数据的统计,如果是英文字母,则按照 A—Z 的顺序排列,越往后,数值越大。如果是汉字则按照全拼拼音进行排列。
也可以对数据行中不同的取值进行聚集,先用 DISTINCT 函数取不同的数据,然后再使用聚集函数。
SELECT COUNT(DISTINCT hp_max) FROM heros
如何对数据进行分组,并进行聚集统计
SELECT COUNT(*), role_main FROM heros GROUP BY role_main
- 字段为 NULL,也会被列为一个分组:
SELECT COUNT(*), role_assist FROM heros GROUP BY role_assist
- 可以使用多个字段进行分组
SELECT COUNT(*) as num, role_main, role_assist FROM heros GROUP BY role_main, role_assist ORDER BY num DESC
如何使用 HAVING 过滤分组,它与 WHERE 的区别是什么?
- WHERE 是用于数据行,而 HAVING 则作用于分组
- HAVING 支持所有 WHERE 的操作
SELECT COUNT(*) as num, role_main, role_assist FROM heros GROUP BY role_main, role_assist HAVING num > 5 ORDER BY num DESC