sql语句order by与group by

一、order by与group by的用法
1.orderby的用法
1)单一列排序
例1:默认排序:
select * from info
sql语句order by与group by_第1张图片
例2:按照no倒序排序
select * from info order by no desc;
sql语句order by与group by_第2张图片
2)多个列属性排序
选择多个列属性进行排序,然后排序的顺序是,从左到右,依次排序。
如果前面列属性有些是一样的话,再按后面的列属性排序。
例:
select * from info order by name desc, age desc
sql语句order by与group by_第3张图片
2.group by的用法
group by按照查询结果集中的某一列(或多列),进行分组,值相等的为一组。
1)细化集函数(count,sum,avg,max,min)的作用对象:
例:求各个课程号及相应的选课人数:
sc表如下图所示
sql语句order by与group by_第4张图片
1>未对查询结果分组,集函数将作用于整个查询结果.
select cno,count(sno) from sc
在这里插入图片描述
对整个表进行count

2>对查询结果分组后,集函数将分别作用于每个组。
select cno,count(sno) from sc group by cno;
sql语句order by与group by_第5张图片
对分组的表进行count

2)多个列属性进行分组举例:
select cno,grade,count(cno) from sc group by cno,grade
sql语句order by与group by_第6张图片
cno为2且成绩为66的,有3个
3)使用HAVING短语筛选最终输出结果
只有满足HAVING短语指定条件的组才输出。
HAVING短语与WHERE子句的区别:作用对象不同。
1>WHERE子句作用于基表或视图,从中选择满足条件的元组。
2>HAVING短语作用于组,从中选择满足条件的组。
例1:
查询选修了3门以上课程的学生学号:
select sno from sc group by sno having count(cno)>3
在这里插入图片描述
例2:
查询选修了3门以上课程,且所有课程成绩都高于60分的学生学号及课程数:
select sno , count(cno) from sc
where grade > 60
group by sno having count(cno) > 3
在这里插入图片描述
二.SQL语句中order by和group by一起使用的注意事项
1.order by 的列,必须是出现在group by 子句里的列
2.order by 要 放在 group by的后面

你可能感兴趣的:(sql)