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