自学内容网 自学内容网

SQL单表查询(2)

对查询结果排序

◆使用ORDER BY子句
– 可以按一个或多个属性列排序
– 升序:ASC;降序:DESC;缺省值为升序
◆ 当排序列含空值时
– ASC:排序列为空值的元组最后显示
– DESC:排序列为空值的元组最先显示
eg查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;

Sdept为主排序,Sage为次要排序,当系相同才按年龄排序。

使用集函数

5 类主要集函数
统计个数
COUNT < 列名 >
计算列总和
SUM < 列名 >
计算列平均值
AVG < 列名 >
求列最大值
MAX < 列名 >
求列最小值
MIN < 列名 >
eg: 查询选修了课程的学生人数
SELECT COUNT(DISTINCT Sno)
FROM SC;
注: DISTINCT 以避免重复计算学生人数

对查询结果分组

用途
– 细化集函数的作用对象
• 未对查询结果分组,集函数将作用于整个查询结果
• 对查询结果分组后,集函数将分别作用于每个组
◆使用GROUP BY子句分组
– 分组方法:按指定的一列或多列值分组,值相等的为一组
– 使用GROUP BY子句后,SELECT子句的列名列表中只能出现分组属性和集函数
eg: 求各个课程号及相应的选课人数
SELECT Cno,COUNT(Sno)
FROM SC
GROUP BY Cno
◆ 使用HAVING短语筛选最终输出结果
– 只有满足HAVING短语指定条件的组才输出
◆ HAVING短语与WHERE子句的区别:作用对象不同
– WHERE子句作用于基表或视图,从中选择满足条件的元组
– HAVING短语作用于组,从中选择满足条件的组
eg: 查询选修了 3 门以上课程的学生学号
SELECT Sno
FROM SC
GROUP BY Sno
HAVING COUNT(*) >=3

查询格式总结


原文地址:https://blog.csdn.net/never1624/article/details/137682497

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!