0


数据库原理-数据查询 单表查询【二】

数据库原理-数据查询 单表查询【二】

聚集函数

聚集函数:

  • 统计元组个数COUNT(*)
  • 统计一列中值的个数COUNT([DISTINCT|ALL]<列名>)
  • 计算一列值的总和(此列必须为数值型)SUM([DISTINCT|[ALL]<列名>)
  • 计算一列值的平均值(此列必须为数值型)AVG([DISTINCT|ALL]<列名>)
  • 求一列中的最大值和最小值MAX([DISTINCT|ALL]<列名>)MIN([DISTINCT|ALL]<列名>)

查询学生总人数

SELECTCOUNT(*)FROM Student;

查询选修了课程的学生人数

SELECTCOUNT(DISTINCT Sno)FROM SC;

计算1号课程的学生平均成绩

SELECTAVG(Grade)FROM SC
    WHERE Cno='1'

查询选修1号课程的学生最高分数

SELECTMAX(Grade)FROM SC
    WHERE Cno='1';

查询学生201215012选修课程的总学分数

SELECTSUM(Credit)FROM SC,Course
    WHERE Sno='201215012'AND SC.Cno=Course.Cno

GROUP BY 子句分组

细化聚集函数的作用对象

  • 如果未对查询结果分组,聚集函数将作用于整个查询结果
  • 对查询结果分组后,聚集函数将分别作用于每个组
  • 按指定的一列或多列值分组,值相等的为一组

求各个课程号及相应的选课人数

SELECT Sno,COUNT(Sno)FROM SC
    GROUPBY Cno;

image-20220501111531553

查询选修了3门以上课程的学生学号

SELECT Sno
    FROM SC
    GROUPBY Sno
    HAVINGCOUNT(*)>3

查询平均成绩大于等于90分的学生学号和平均成绩

错误的SQL

SELECT Sno,AVG(Grade)FROM SC
    WHEREAVG(Grade)>=90GROUPBY Sno;

因为WHERE子句中不能所有聚集函数作为条件表达式

正确的SQL

SELECT Sno,AVG(Grade)FROM SC
    GROUPBY Sno
    HAVINGAVG(Grade)>=90

HAVING短语与WHERE子句的区别

  • 作用对象不同
  • WHERE子句作用与基本表或视图,从中选择满足条件的元组
  • HAVING短语作用于组,从中选择满足条件的组

列出计算机系姓刘的同学的信息,按照学号大小排序

SELECT*FROM Student
    WHERE Sdept='CS'AND Sname LIKE'刘%'ORDERBY Sno;

按系并区分男女统计各系学生的人数、并按照人数降序排序

SELECT Sdept,Ssex,COUNT(Sno)FROM Student
    GROUPBY Sdept,Ssex
    ORDERBYCOUNT(Sno)DESC;

本文转载自: https://blog.csdn.net/weixin_42403632/article/details/124524836
版权归原作者 小旺不正经 所有, 如有侵权,请联系我们删除。

“数据库原理-数据查询 单表查询【二】”的评论:

还没有评论