SQL中的GROUP BY語句用於藉助某些function將相同的數據分組。注意這裏的藉助二字。也就是說,如果特定的列在不同的行中具有相同的值,則它將這些行排列在一組中。
關於GROUP BY的使用要點:
- GROUP BY子句需要和SELECT語句一起使用。
- 在查詢中,GROUP BY子句放在WHERE子句之後。
- 在查詢中,如果使用GROUP BY子句,則將其放在ORDER BY子句之前。
其語法格式如下:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
例,假設有customers表如下:
現在假設有如下sql語句:
SELECT NAME, SUM(SALARY) FROM Employee
GROUP BY NAME;
則其查詢結果爲:
從上面的輸出中可以看到,具有重複名稱的行被分組在同一列下,它們對應的SALARY是重複行的SALARY之和。 SQL的SUM()函數用於計算總和。
也可以group by多個column。
例如:GROUP BY column1,column2。 這個寫法的意思是將具有相同的列1和列2值的所有行放在一組中。例如有如下的表students:
現有sql語句如下:
SELECT SUBJECT, YEAR, Count(*)
FROM Student
GROUP BY SUBJECT, YEAR;
其查詢結果爲:
HAVING
在 SQL 中增加 HAVING 子句原因是,WHERE 關鍵字無法與聚合函數一起使用。
HAVING 子句可以讓我們篩選分組後的各組數據。
其用法如下:
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;