MySQL是目前世界上最流行的關系型數據庫管理系統,廣泛應用于各行各業。在實際應用中,我們常常需要進行數據的分組統計查詢。MySQL提供了豐富的分組統計查詢函數,本文將為大家詳細介紹如何使用MySQL進行分組統計查詢。
1. GROUP BY語句
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name;
GROUP BY語句用于按照一個或多個列對結果集進行分組,并返回每個組的聚合函數結果。其中,column_name指的是要進行分組的列名,aggregate_function指的是聚合函數(如SUM、AVG、COUNT等),table_name指的是要查詢的表名,operator指的是過濾條件運算符,value指的是過濾條件的值。
2. 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;
HAVING語句用于過濾分組后的結果集。它的作用類似于WHERE語句,不同之處在于它可以對聚合函數進行過濾。其中,aggregate_function指的是聚合函數(如SUM、AVG、COUNT等),operator指的是過濾條件運算符,value指的是過濾條件的值。
3. WITH ROLLUP語句
SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name WITH ROLLUP;
WITH ROLLUP語句可以顯示每個分組及其聚合函數結果的總計。它將一個NULL值作為分組的標志,最后一行顯示所有分組總計的聚合函數結果。例如:
SELECT name, SUM(score)
FROM student
GROUP BY name WITH ROLLUP;
結果將顯示每個學生的總分數,以及所有學生的總分數。
4. 示例代碼
SELECT country, COUNT(*) AS total
FROM customers
GROUP BY country
HAVING COUNT(*) >5
ORDER BY total DESC;
這段示例代碼將統計每個國家的客戶數量,并過濾出客戶數量大于5的國家,并按照客戶數量從大到小的順序進行排序。