文科生的SQL初体验之聚合函数与开窗函数
程序员文章站
2022-04-05 17:10:51
...
聚合函数
聚合函数:count、avg、sum、max、min
- count函数
select count(*)from 资料表
查询表中cid为1的有多少列
select count(*)as count1 from 资料表
where cid=1
select count(sphone)as count1 from 资料表
where cid=1
此时表中sphone为null值的是不会算入的
- max函数和min函数
求所有分数最大值
select Max(scorecalue) from scoreinfo
求学生id为2的最低分
select min(scorevalue) from scoreinfo
where subid=2
如果要研究语文科目的平均分,我们知道的是分数表和科目表是分离的,因此需要外键连接
select AVG(scorevlaue)
from subjectinfo
inner jion scoreinfo on subid=subjectinfo.sld
where stitle=语文
原则:先连表,再筛选
需要注意的是:
1.聚合函数,一般是对数字类型的列进行操作
2.一条查询中可以同时写多个聚合函数,但是不能与普通列混写
开窗函数over()
select scoreinfo.*,AVG(scorevalue) over()
from scoreinfo
where subid=1
原理:
因为聚合函数是把原先一列列的数据进行合并,合并成一行后进行计算而得出的,但前面的scoreinfo.*要求显示各列,与后面聚合函数合并成一行冲突,加入over函数可还原成原先一行行的数据
分组
select count(*)
from studentinfo
group by sgender
--求每个科目的平均分
select subid,AVG(scorevalue) from scoreinfo
group by subid
sgender,cid属性一样才能分成一组
需要注意的是select后面两个必须是一样的
否则就会报错
--求每个班的男女生人数
--结果集中,分组依据值相同的实例在一组,在结果列中只能出现分组依据列和聚列
select sgender,count(*)
from studentinfo
group by sgender,cid
上一篇: 数据库系统概念第6版第3章习题答案
下一篇: 关于数据库查询