SQL函数

聚集函数通常和GROUP BY联合起来使用

()必选,[]可选

COUNT(*) 统计元组个数,返回被选行数

COUNT([DISTINCT|ALL]<列名>) 统计一列中值的个数

SUM([DISTINCT|ALL]<列名>) 统计一列值的总和  此列必须为数值型

AVG([DISTINCT|ALL]<列名>)计算一列值的平均值  此列必须为数值型

MAX([DISTINCT|ALL]<列名>)计算某一列值的最大值

MIN([DISTINCT|ALL]<列名>)计算某一列值的最小值

GROUP BY 子句分组  有点像透视表,可以拉分组

细化聚集函数的作用对象

如果未对查询结构分组,聚集函数将作用于整个查询结果

对查询结果分组后,聚集函数将分别作用每一个组

按指定的一列或多咧分组,值相等的为一组

选修不同课程的人数的学号

SELECT Cno, COUNT(Sno) 选择课程编号,及选修课程的人数的计数

FROM SC

GROUP BY Cno  以课程编号分组

获得选修课程数大于3的学生的学号

SELECT Sno 学生学号

FROM SC

GROUP BY Sno  以学生学号分组

HAVING COUNT(*)>3  行数大于3

错误案例:

SELECT Sno ,AVG(Grade)

FROM SC

WHERE AVG(Grade)>=90  WHERE是对记录的限定,但是AVG是对组的限定是在GROUP BY基础上的WHERE是作用于记录,HAVING 作用于记录之上的分组

GROUP BY Sno

 

正确案例:

SELECT Sno,AVG(Grade)

FROM SC

GROUP BY Sno

HAVING AVG(Grade)>=90

 

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

SELECT *

FROM Student

WHERE Sdept =’CS’ AND Sname LIKE ‘刘%‘

ORDER BY Sno

按系区分男女,统计各个系的人数,降序排列

SELECT Sdept,Ssex,COUNT(Sno)

FROM Student

GROUP BY Sdept,Ssex

ORDER BY COUNT(Sno)

 

 

 

 

 

 

 

 

 

 

 

阅读更多

没有更多推荐了,返回首页