ホームページ >データベース >mysql チュートリアル >単一の SQL クエリで条件付き集計を使用して 2 つの異なるデータ セットを取得する方法

単一の SQL クエリで条件付き集計を使用して 2 つの異なるデータ セットを取得する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-21 12:36:10423ブラウズ

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

単一の SQL クエリを使用して 2 つの別々のデータセットを効率的に取得する

この例では、複数のクエリの必要性を回避して、単一の SQL クエリから 2 つの異なるデータセットを取得する方法を示します。 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 が「allocation」の場合、pointsallocated_points に追加されます。それ以外の場合は 0 が追加されます。 同じロジックが issued_points にも当てはまります。 GROUP BY 句により、一意の budget_id ごとに合計が計算されるようになります。

期待される出力:

クエリは次のような結果セットを返します:

<code>budget_id | allocated_points | issued_points
----------|-------------------|---------------
    434   |       200000      |     100
    242   |       100000      |     5020
    621   |        45000      |     3940</code>

以上が単一の SQL クエリで条件付き集計を使用して 2 つの異なるデータ セットを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。