首頁 >資料庫 >mysql教程 >如何透過條件聚合實現 MySQL 中的「SUM IF」和「COUNT IF」功能?

如何透過條件聚合實現 MySQL 中的「SUM IF」和「COUNT IF」功能?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-13 14:32:02430瀏覽

How to Achieve 'SUM IF' and 'COUNT IF' Functionality in MySQL with Conditional Aggregation?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn