求详解SQL中GROUP BY的用处。。

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:57:03
还有having ....grouping。。CUBE...rollup等。。它们经常在一起用,但是最重要的是GROUP BY。。。它分组是怎么个分法?在什么场合能用得上?

group by 分组 必须是在一对多的条件下
比如说 姓名字段 成绩字段
A 80
A 90
B 86
B 90
这样就可以分组 姓名字段 而 成绩必须用聚合函数
因为你姓名已被分组查询完就是一个值了`成绩也必须是
having 是分组筛选 必须和 group by 一起用
如`以上面的字段做例子
select 姓名,avg(成绩) from 表名
group by 姓名
having avg(成绩)>80

查询的平均成绩大于80

举个例子:
张三,语文60分
张三,数学80分
张三,英语70分
李四,语文60分
李四,数学80分
李四,英语70分

要查询张三李四的总分
select name,sum(分数) from 表 group by name;

sql是这么执行的
1、取得一条数据:张三,语文60分
2、又取得一条数据:张三,数学80分 此时因为是按照名字group by 所以sql把分数sum了,继续读下一条数据
3、又取得一条数据:张三,英语70分 此时因为是按照名字group by 所以sql把分数sum了,继续读下一条数据
4、又取得一条数据:李四,语文60分 此时因为是按照名字group by 而这个时候name已经发生了变化,所以sql把上一条数据打印 【张三,220分】 然后重复上面的操作直到数据被全部取完。

---
以上,希望对你有所帮助。