大家好,欢迎来到IT知识分享网。
group by 从英文里理解就是分组。必须有“聚合函数”(分组函数)来配合才能使用,使用时至少需要一个分组标志字段。
什么是“聚合函数”?
像sum()、count()、avg()等都是“聚合函数”
使用group by 的目的就是要将数据分类汇总。
1.出现在select 列表中的字段,如果出现的位置不是在组函数中,那么必须出现在group by子句中。
eg. select department_id, AVG(salary)
from employees
group by department_id;
eg. select ename, AVG(salary)
from employees
group by department_id;这样就是错误的啦。
我自己的测试如下:
2.在group by 子句中出现的字段,可以不出现在查询列表中。
eg. select AVG(salary)
from employees
group by department_id;
这是没问题的。
3.在group by 子句中,可以按单列进行分组,也可以在多列上进行分组,多列分组就是按照多个字段的组合进行分组,最终结果也会按照分组字段进行排序显示。
eg. select department_id dept_id , job_id , sum(salary)
from employees
group by department_id , job_id
order by 从英文里理解就是行的排序方式,默认的为升序。 order by 后面必须列出排序的字段名,可以是多个字段名。
在sql命令格式使用的先后顺序上,groupby 先于 order by。
order by是按指定的列的升序或降序来给查询结果排序,
它不需要查询结果中出现order by的栏位.
更改Order by里的栏位只会影响查询结果的顺序,而不影响查询出的记录总数,和每条记录的内容.
where 子句中不允许出现组函数,组函数可以出现在查询列表中,也可以出现在groupby 字句中。但是不允许出现在where 子句中。因此对组的过了不能通过where实现,而是需要having子句实现。
实际运行测试:
上面可以看出,group by 只有三个部门的记录,而order by显然会有显示出所有的记录,因为它只是对原先的记录进行一个排序而已。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29920.html