首頁 > 資料庫 > mysql教程 > MySQL在不直接支援「SUM IF」和「COUNT IF」的情況下如何有效實現條件聚合?

MySQL在不直接支援「SUM IF」和「COUNT IF」的情況下如何有效實現條件聚合?

Susan Sarandon
發布: 2024-11-15 00:58:02
原創
751 人瀏覽過

How can MySQL effectively achieve conditional aggregations without direct support for 'SUM IF' and 'COUNT IF'?

優雅的解決方案:克服MySQL 中「SUM IF」和「COUNT IF」的限制

儘管它們很有用,但MySQL缺乏直接支援對於“SUM IF”和“COUNT IF”函數。在處理條件聚合時,這種限制通常會令人沮喪。但是,有一個使用 CASE 語句的優雅解決方案。

考慮以下場景:

目標是計算:

  • 記錄總數
  • 總小時數
  • ' kind'等於1的記錄數

原始嘗試和MySQL的回應:

首次嘗試使用「SUM( IF(...) )」或“COUNT( IF(...) )”會導致錯誤。 MySQL 不允許將聚合函數與「IF」等控制結構混合使用。

使用 CASE 語句的解:

CASE 語句提供了條件表達式來動態求值並傳回價值觀。它可用於有效地實現所需的條件聚合。操作方法如下:

此查詢執行以下操作:

  • count(id):計算記錄總數。
  • SUM(hour) :計算總小時數。
  • SUM(case when kind = 1 then 1 else 0 end):使用 CASE 語句有條件地計算 'kind' 等於 1 的記錄數。

輸出:

利用CASE 語句,我們可以優雅地克服MySQL 中「SUM IF」和「COUNT IF」的限制,從而實現高效的條件聚合。

以上是MySQL在不直接支援「SUM IF」和「COUNT IF」的情況下如何有效實現條件聚合?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板