1. 程式人生 > >SQL Server中Group by語句與HAVING語句的使用

SQL Server中Group by語句與HAVING語句的使用

一、GROUP BY

GROUP BY語句用來與聚合函式(aggregate functions such as COUNT, SUM, AVG, MIN, MAX.)聯合使用來得到一個或多個列的結果集。

語法如下

SELECT column1, column2, ... column_n, aggregate_function (expression)            

FROM tables            

WHERE predicates            

GROUP BY column1, column2, ... column_n;

舉例

新建tb_student表並向表中插入測試資料。

問題1

按照班級ID對學生進行分組,並查詢出每個班級的學生數,學生的最大年齡,最小年齡,年齡總和及年齡平均等資訊。

解答

SELECT s.class_id AS 班級,COUNT(*) AS 人數,MAX(s.student_age) AS 年齡最大,MIN(s.student_age) AS 年齡最小,SUM(s.student_age) AS 年齡總和,AVG(s.student_age) AS 年齡平均 FROM tb_Student AS s GROUP BY s.class_id

查詢結果

問題2

查詢出存在年齡小於25週歲學生的班級ID及班級人數。

解答

SELECT s.class_id AS 班級,COUNT(*) AS 人數 FROM tb_Student AS s GROUP BY s.class_id HAVING MIN(s.student_age)<25

查詢結果

二、HAVING

HAVING語句是在GROUP BY語句之後使用,對分組的資料進行過濾。 所以,有GROUP BY語句才能有HAVING子句。

語法如下

SELECT column1, column2, ... column_n, aggregate_function (expression)
FROM tables
WHERE predicates
GROUP BY column1, column2, ... column_n
HAVING condition1 ... condition_n;