order by 和 group by 的区别

如题所述

第1个回答  2019-11-28
sql
里的
order
by

group
by
的区别:
order
by
从英文里理解就是行的排序方式,默认的为升序。
order
by
后面必须列出排序的字段名,可以是多个字段名。
group
by
从英文里理解就是分组。必须有“聚合函数”来配合才能使用,使用时至少需要一个分组标志字段。
什么是“聚合函数”?
像sum()、count()、avg()等都是“聚合函数”
使用group
by
的目的就是要将数据分类汇总。
一般如:
select
单位名称,count(职工id),sum(职工工资)
form
[某表]
group
by
单位名称
这样的运行结果就是以“单位名称”为分类标志统计各单位的职工人数和工资总额。
在sql命令格式使用的先后顺序上,group
by
先于
order
by。
order
by
排序查询、asc升序、desc降序
示例:
select
*
from
学生表
order
by
年龄
查询学生表信息、按年龄的升序(默认、可缺省、从低到高)排列显示
也可以多条件排序、
比如
order
by
年龄,成绩
desc
按年龄升序排列后、再按成绩降序排列
group
by
分组查询、having
只能用于group
by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group
by
子句的查询语句需要使用聚合函数。
示例:
select
学号,SUM(成绩)
from
选课表
group
by
学号
按学号分组、查询每个学号的总成绩
select
学号,AVG(成绩)
from
选课表
group
by
学号
having
AVG(成绩)>(select
AVG(成绩)
from
选课表
where
课程号='001')
order
by
AVG(成绩)
desc
查询平均成绩大于001课程平均成绩的学号、并按平均成绩的降序排列