MySQL 條件聚合:解鎖「SUM IF」和「COUNT IF」功能
在MySQL 中,執行條件聚合,例如求和或根據具體條件進行計數,可以透過使用CASE語句來實現。這使您可以靈活地將條件應用於聚合操作。
考慮以下場景:您有一個包含「hour」和「kind」欄位(可以儲存值 1、2 或 3)的表。您想要計算行數,計算總小時數,並確定 'kind' 等於 1 的行數。
最初,您可以嘗試以下查詢:
SELECT count(id), SUM(hour) as totHour, SUM( IF ( kind = 1, 1, 0 ) ) as countKindOne
或
SELECT count(id), SUM(hour) as totHour, COUNT( IF ( kind = 1 ) ) as countKindOne
但是,這些查詢可能會導致錯誤。要解決此問題,您需要在聚合操作中使用CASE 語句:
SELECT count(id), SUM(hour) as totHour, SUM(case when kind = 1 then 1 else 0 end) as countKindOne
在此CASE 語句中,我們指定如果「kind」列中的值為1,則傳回1,否則返回我們返回0。這允許我們有條件地計算 'kind' 等於 1 的行。
以上是如何透過條件聚合實現 MySQL 中的「SUM IF」和「COUNT IF」功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!