首頁 > 資料庫 > mysql教程 > 如何在單一 SQL 查詢中使用條件聚合檢索兩個不同的資料集?

如何在單一 SQL 查詢中使用條件聚合檢索兩個不同的資料集?

Mary-Kate Olsen
發布: 2025-01-21 12:36:10
原創
455 人瀏覽過

How to Retrieve Two Distinct Data Sets with Conditional Aggregation in a Single SQL Query?

使用單一 SQL 查詢高效檢索兩個單獨的資料集

此範例示範如何從單一 SQL 查詢檢索兩個不同的資料集,從而避免多個查詢的需要。 我們將使用 transactions 表(包含 idaccount_idbudget_idpointstype 欄位)進行說明。目標是獲得:

  1. 每個 points 的總 budget_id,其中 type 是「分配」。
  2. 每個 points 的總 budget_id,其中 type 是「問題」。

解:條件聚合

單一 SQL 查詢可以使用條件聚合來實現此目的:

<code class="language-sql">SELECT 
    budget_id,
    SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated_points,
    SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued_points
FROM 
    transactions
GROUP BY 
    budget_id;</code>
登入後複製

此查詢使用 CASE 語句(或某些資料庫系統中的 IF)來有條件地對 points 求和。 如果 type 是“分配”,則將 points 加到 allocated_points 中;否則加0。 同樣的邏輯也適用於issued_pointsGROUP BY 子句確保為每個唯一的 budget_id.

計算總和

預期輸出:

查詢將傳回類似以下的結果集:

<code>budget_id | allocated_points | issued_points
----------|-------------------|---------------
    434   |       200000      |     100
    242   |       100000      |     5020
    621   |        45000      |     3940</code>
登入後複製

以上是如何在單一 SQL 查詢中使用條件聚合檢索兩個不同的資料集?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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