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