使用GROUP BY 子句数据分组
使用HAVING 子句过滤分组结果集
分组函数作用于一组数据,并对一组数据返回一个值。如:AVG、COUNT、MAX、MIN、SUM操作的是一组数据,返回一个结果。
分组函数我的理解是 对相同的一组数据 取 一个值,
分组中可以继续分组, 比如对小学进行分组,分组年级,得到(一)(二)(三)年级的分组,然后在对(一)年级的班级继续分组,(一年一)(一年二)(一年三),然后可以对(一年一)班的人数进行统计,最高分数,等等得到一个值,
在或者对(一年一)班的男女再次分组,这样就得到了 (一年一班男)(一年一班女)两组数据,对(一年一班男)男生个数统计,男生平均身高统计,或者最大年龄最小年龄等等
001 小明 男 7岁 1.5m 1年级 1班 99分
002 小红 女 6岁 1.3m 1年级 1班 80分
003 小张 男 7岁 1.1m 2年级 2班 88分
004 小文 男 6岁 1.1m 2年级 2班 77分
005 小花 女 7岁 1.3m 2年级 2班 0分
select grade,class, MAX(math) from student group by grade,class
select grade,class, sex,MAX(age) from student group by grade,class ,sex
注意: 在SELECT 列表中所有没有包含在组函数中的列,都必须在group by的后面出现。
使用 HAVING 过滤分组:
1. 行已经被分组。
2. 使用了组函数。
3. 满足HAVING 子句中条件的分组将被显示。
l 不能在 WHERE 子句中使用组函数(注意)。
l 可以在 HAVING 子句中使用组函数。
有事等会写