用於將數據表中的數據按照一個或多個列進行分組。例如在處理一個表格的資料時,可以指定欄位,一個或是多個,然後把將其視為ID進行分組處理。
SELECT column1, column2, ..., aggregate_function(column)
FROM table_name
GROUP BY column1, column2, ...;
//aggregate_function(column)可以是聚合函數,
//如SUM(column)、COUNT(column)、AVG(column)、MAX(column)或MIN(column)等
先用WHERE
篩選出我們想要的記錄,再用SELECT
篩選出我們需要的欄位。接著,GROUP BY
做分組處理。如果我們想要對所有結果進行排序,我們會在GROUP BY
之後使用ORDER BY
子句來排序。
• Aggregate function(聚合函數):用於對同一個群組中的所有記錄,進行數據分析和統計計算的函數的一個函式。
常見的聚合函數包括:
SUM()
和GROUP BY
來達成:SELECT ProductID, SUM(Sales)
FROM SalesRecords
GROUP BY ProductID;
• Expression(表達式):指的是一個可以產生值的語句。這個語句可以包含變量、常數、運算符和函數。例如針對欄位做加減乘除的處裡。
SELECT (Price * Quantity) AS TotalCost
FROM OrderDetails;
//將Price欄位和Quantity欄位的值相乘,然後將結果作為TotalCost返回。
通常與GROUP BY
子句一起使用,根據指定的條件將分組查詢的結果進行過濾。
操作的順序是先GROUP BY
把record做分組,然後進行Aggregate function(聚合函數)運算,最後使用HAVING
進行篩選。
SELECT Department, COUNT(EmployeeID) as EmployeeCount
FROM Employees
GROUP BY Department
HAVING COUNT(EmployeeID) > 5;
//將員工按照部門分組,然後計算每個部門的員工數量。HAVING子句過濾出員工數量大於5的部門
Aggregate function(聚合函數)運算後
對結果進行過濾,篩選的對象是group
。GROUP BY之前
先對數據進行過濾,篩選的對象是record
。