ホームページ >データベース >mysql チュートリアル >単一の SQL クエリで条件付き集計を使用して 2 つの異なるデータ セットを取得する方法
単一の SQL クエリを使用して 2 つの別々のデータセットを効率的に取得する
この例では、複数のクエリの必要性を回避して、単一の SQL クエリから 2 つの異なるデータセットを取得する方法を示します。 transactions
テーブル (id
、account_id
、budget_id
、points
、type
列を含む) を使用して説明します。目標は以下を取得することです:
points
の合計 budget_id
(type
は「割り当て」です)。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」の場合、points
は allocated_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 サイトの他の関連記事を参照してください。