1. SQL的GROUP BY用法小結
使用 COUNT() 、 AVG() 、 MIN() 、 MAX() 等聚合函數可實現對分組的過濾,聚合函數會分別對各組數據進行聚合。
以下面的orders表為例:
按照status列將訂單分組並計算各組包含的訂單條目數:
查詢結果為:
再以一個orderdetails表為例:
若希望計算每個訂單中包含商品的總價,則有
查詢結果為:
GROUP BY 語句中還可以使用函數或表達式來處理數據。
例如,從上述orders表和orderdetails表中查詢每年訂單總額:
查詢結果為:
HAVING 語句可以過濾出分組後滿足特定條件的數據。
例如,查找出總額大於60000的訂單
查詢結果為:
注意 :
WHERE 語句和 HAVING 語句雖然都可以對數據進行過濾,但用法是不同的, HAVING 語句可以用於過濾分組, WHERE 語句只能過濾行,不能過濾分組;因此 WHERE 語句應在 GROUP BY 之前使用。例如:
查詢結果為:
且 WHERE 語句中不能使用別名或者表達式,例如下列寫法是不合法的: