Sql Server 中 group by 的使用


Sql server 中group by 一般和聚集函数一起使用。

列如

id  name      age height

27 xiaoming 18 148
28 xiaoli 12 150
29 xiaohei 32 178
30 xiaoming 28 167
31 xiaoming 28 167

我们按照 名字进行分组

select name from userinfo group by name

结果如下

name

xiaohei
xiaoli
xiaoming

 

group by 将结果按照某一列或者多列进行分组

注意:

出现在select 后面的字段要么在group by 后面,要么在聚集函数中,什么意思?

列如下面的Sql 语句:

SELECT name,age FROM userinfo GROUP BY name

Column 'userinfo.age' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

因为age 既没在group by 后面,又没在聚集函数,所以报错。正确写法如下:

1:SELECT name,age FROM userinfo GROUP BY name,age

2:SELECT name,MIN(age) FROM userinfo GROUP BY name

 

2:对分组的数据进行筛选 

1:在分组前先用where 进行筛选 ,where 条件中不能包含聚集函数

SELECT name FROM userinfo WHERE age>18 GROUP BY name

2:或者分组后用having 进行筛选,条件中经常包含聚集函数

SELECT name FROM userinfo GROUP BY name,age HAVING COUNT(name)>1

 

d

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM