欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

文科生的SQL初体验之聚合函数与开窗函数

程序员文章站 2022-04-05 17:10:51
...

聚合函数

聚合函数:count、avg、sum、max、min

  1. count函数

select count(*)from 资料表

文科生的SQL初体验之聚合函数与开窗函数

查询表中cid为1的有多少列


select count(*)as count1 from 资料表
where cid=1


select count(sphone)as count1 from 资料表
where cid=1

此时表中sphone为null值的是不会算入的

  1. 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

文科生的SQL初体验之聚合函数与开窗函数原理:
因为聚合函数是把原先一列列的数据进行合并,合并成一行后进行计算而得出的,但前面的scoreinfo.*要求显示各列,与后面聚合函数合并成一行冲突,加入over函数可还原成原先一行行的数据

分组


select count(*)
from studentinfo
group by sgender

--求每个科目的平均分
select subid,AVG(scorevalue) from scoreinfo
group by subid


sgender,cid属性一样才能分成一组
文科生的SQL初体验之聚合函数与开窗函数
需要注意的是select后面两个必须是一样的
否则就会报错


--求每个班的男女生人数
--结果集中,分组依据值相同的实例在一组,在结果列中只能出现分组依据列和聚列
select sgender,count(*)
from studentinfo
group by sgender,cid

相关标签: SQL 数据库 sql