SQL Server中的分组数据和子查询

1.分组数据
SQL Server Group By语句
Group By 从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集” 划分成若干个“小区域”,然后针 对若干个“小区域”进行数据处理
语法: select st.Sid, st.Sname,AVG(c.score)平均成绩 from sc c
join Student st on c.Sid=st.Sid
where c.score>=60
group by c.Sid ,st.Sid, st.Sname
在此查询语法中, GROUP BY 子句为列中的每个值组合生成一个组。
效果:
SQL Server中的分组数据和子查询_第1张图片
2.聚合函数
聚合函数对组执行计算并返回每个组的唯一值。 例如, COUNT() 函数返回每个组中的行数。 其他常用的聚合函数是: SUM() , AVG() , MIN() , MAX() 。
语法:AVG(): select st.Sid, st.Sname,AVG(c.score)平均成绩 from sc c
join Student st on c.Sid=st.Sid
where c.score>=60
group by c.Sid ,st.Sid, st.Sname
Count():select a.Sid,a.Sname,count(b.Cid)选课总数,SUM(b.score)总成绩 from Student a
LEFT join sc b on a.Sid=b.Sid
group by a.Sid,a.Sname,b.Sid
order by SUM(b.score)desc
SUM():select a.Sid,a.Sname,count(b.Cid)选课总数,SUM(b.score)总成绩 from Student a
LEFT join sc b on a.Sid=b.Sid
group by a.Sid,a.Sname,b.Sid
order by SUM(b.score)desc
效果:
SQL Server中的分组数据和子查询_第2张图片
MAX():SELECT MAX(score) AS score FROM sc;
SQL Server中的分组数据和子查询_第3张图片
Min():SELECT Min(score) AS score FROM sc;
SQL Server中的分组数据和子查询_第4张图片
3. SQL Server Having子句
HAVING 子句通常与[GROUP BY]子句一起使用,以根据指定的条件列表过滤分组。
HAVING 子句 的语法:select b.Sid, b.Sname from sc a
join Student b on a.Sid=b.Sid
group by b.Sid, b.Sname
having count(a.Cid)<(select count(cid) from Course)
效果:
SQL Server中的分组数据和子查询_第5张图片
4.SQLServer子查询
子查询是嵌套在另一个语句(如:[SELECT],[INSERT],[UPDATE]或[DELETE])中的查询。
语法: select b.Sid,b.Sname,b.Ssex,b.Sage from sc a
join Student b on a.Sid=b.Sid
where a.Cid in(select b.Cid from Teacher a
join Course b on a.Tid=b.tid
where a.Tname=‘张三’)
group by b.Sid,b.Sname,b.Ssex,b.Sage
效果:SQL Server中的分组数据和子查询_第6张图片
4.1 Exists带有相关子查询
SQL Server中的分组数据和子查询_第7张图片
4.2 SQL Server Any运算
ANY 运算符是一个逻辑运算符,它将标量值与子查询返回的单列值集进行比较

你可能感兴趣的:(sql,sql)