SQL Server中Group by語句與HAVING語句的使用
阿新 • • 發佈:2019-02-10
一、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;