ホームページ > データベース > mysql チュートリアル > 単一の SQL クエリで複数の WHERE 句の条件に基づいて異なる合計を取得するにはどうすればよいですか?

単一の SQL クエリで複数の WHERE 句の条件に基づいて異なる合計を取得するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2025-01-21 12:47:10
オリジナル
462 人が閲覧しました

How Can a Single SQL Query Retrieve Distinct Sums Based on Multiple WHERE Clause Conditions?

複数の WHERE 句を使用して異なるデータを取得する

SQL では、WHERE 句を使用して特定の行をフィルタリングし、テーブルからのデータの取得方法をカスタマイズできます。この問題は、それぞれが異なる WHERE 句を満たす 2 つの異なるデータ セットを同じテーブルから抽出するという課題を提示します。

サンプル テーブル「transactions」には、ID、アカウント ID、予算 ID、獲得ポイント、およびトランザクション タイプによって特徴付けられる金融トランザクションの記録が保存されます。このタスクは、一意の予算 ID ごとに割り当てられたポイントの合計と発行されたポイントの合計を計算することです。

これを行うには、必要な WHERE 句を組み合わせた単一の SQL クエリを構築できます。次のクエリでは、望ましい結果が得られます:

<code class="language-sql">SELECT budget_id, 
       SUM(CASE WHEN type = 'allocation' THEN points ELSE 0 END) AS allocated,
       SUM(CASE WHEN type = 'issue' THEN points ELSE 0 END) AS issued
FROM transactions
GROUP BY budget_id</code>
ログイン後にコピー

このクエリは CASE WHEN ステートメントを使用して、トランザクション タイプに基づいて条件付きでポイントを合計します。クエリは予算 ID ごとに、「割り当て」タイプに関連付けられたポイントの合計を計算し、それを「割り当て済み」列に保存します。同様に、「発行」タイプのポイントの合計を計算し、「発行」列に格納します。結果を予算 ID でグループ化することにより、クエリは期待される結果セットを生成します。この結果セットには、予算ごとに割り当てられたポイントと発行されたポイントの個別の列が含まれます。

このクエリは、WHERE 句を組み合わせてテーブルからデータの特定のサブセットを取得する SQL の柔軟性を示しており、複雑なデータ取得タスクを実行するための強力なツールとなっています。

以上が単一の SQL クエリで複数の WHERE 句の条件に基づいて異なる合計を取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート