今天要介紹的是在 SQL 中,用於過濾資料的WHERE和HAVING子句,但它們的應用場景有所不同。
WHERE子句用於在進行分組GROUP BY之前過濾資料。它限制資料範圍,確保只有符合條件的行參與分組和聚合。例如,從表中選取某些特定條件下的資料進行分組操作。
HAVING子句則是針對已經完成分組和聚合後的資料進行過濾。它常與聚合函數SUM、COUNT等搭配使用,用來過濾出符合聚合結果條件的組。例如,篩選總和大於某個值的分組結果。簡單來說,WHERE是過濾行,HAVING過濾分組結果。
使用WHERE範例:在employees和departments中,將部門代號30以後的資料一兆部門代號進行排序,並顯示同一個部門中,每一個職務員工每個月薪資之總和。
使用HAVIG範例:在order_items資料表中,查詢單價高於1000,且曾經被訂購超過5次以上的產品之編號、訂購次數以及單價。