SQL的分组查询

一、在SQL中Group By从字面的意思上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个‘数据集’划分成若干个‘小区域’,然后针对若干个‘小区域’进行数据处理。在此语法中group by子句为列中每一值组合生成一组。
例如:对成绩表(sc)中的学号(sno)进行分组

SELECT sno
FROM sc
GROUP BY sno

注意:使用GROUP BY 语法是分组,不是去重。需要去重的请使用DISTINCT,以下是去重的语法:

SELECT DISTINCT sno
FROM sc

二、sql server里分组查询通常用于配合聚合函数,达到分类汇总统计的信息。 而其分类汇总的本质实际上就是先将信息排序,排序后相同类别的信息会聚在一起,然后通过需求进行统计计算。常用函数有:COUNT()总数量总行数、SUM()总数总和、AVG()平均值、MIN()最小值、MAX()最大值。
例如:对成绩表(sc)中的每一个学号(sno)进行统计总分

SELECT sno,SUM(score)
FROM sc
GROUP BY sno

注意:在查询有多少个列的时候,就要在GROUP BY 中引用多少个列,比如:查询sno,score,那么在GROUP BY 中就有 sno,score

三、HAVING与 GROUP BY 配合使用,为聚合函数操作指定条件,以根据指定的条件列表过滤分组。而WHERE 子句中只能指定行的条件,而不能指定组的条件,因此就有了 HAVING 子句,它用来指定组的条件。
例如:对成绩表(sc)中的每一个学号(sno)进行统计总分,并且总分要大于200分以上的。

SELECT sno,SUM(score)
FROM sc
GROUP BY sno
HAVING SUM(score) >200
ORDER BY SUM(score)

注意:WHERE子句筛选是要在 GROUP BY 之前进行筛选的,而且WHERE子句不能引用聚合函数进行操作,否则会出错的。使用HAVING进行筛选,一定要在GROUP BY 之后。若要使用ORDER BY进行排序的话,必须要在HAVING 的之后,否则会出错。

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值