このチュートリアルでは、CASE ステートメントを SUM 関数および GROUP BY 句とともに使用する方法を学習します。
このチュートリアルでは、SQL Case ステートメント、sum() 関数、または GROUP BY 句の操作の基本については説明しません。これらの SQL 機能の基本を探している場合は、トピックに関するチュートリアルを参照してさらに詳しく調べてください。
問題:
「orders」という名前のテーブルがあり、顧客 ID ごとにグループ化された各顧客の合計売上高を取得したいとしますが、同時に 3 つ以上の注文を行った顧客の割引も計算したいとします。
表を以下に示します。
「CREATE TABLE」の注文 (
order_id INT 主キー、
customer_id INT、
製品ID INT、
order_date DATE、
数量INT、
価格 10 進数 ( 10 、 2 )
) ;
以下に示すように、サンプル データをテーブルに挿入します。
注文に挿入 ( order_id、customer_id、product_id、order_date、数量、価格 )
価値観
( 1 、 101 、 1 、 「2022-04-01」 、 2 、 10.99 ) 、
( 2 、 102 、 2 、 「2022-04-01」 、 1 、 19.99 ) 、
( 3 、 103 、 1 、 「2022-04-02」 、 3 、 8.99 ) 、
( 4 、 101 、 3 、 「2022-04-03」 、 2 、 15.99 ) 、
( 5 、 102 、 1 、 「2022-04-03」 、 1 、 12.99 ) 、
( 6 、 104 、 2 、 「2022-04-04」 、 4 、 7.99 ) 、
( 7 、 103 、 3 、 「2022-04-05」 、 2 、 21.99 ) 、
( 8 、 101 、 2 、 「2022-04-06」 、 1 、 18.99 ) 、
( 9 、 104 、 1 、 「2022-04-07」 、 2 、 9.99 ) 、
( 10 、 102 、 3 、 「2022-04-07」 、 3 、 14.99 ) ;
これにより、次のようなテーブルが作成されるはずです。
Sum 句と Group By 句を使用した SQL ケース
ID ごとにグループ化された各顧客の合計売上を取得し、3 つ以上の注文を行った顧客の割引を計算するには、次のように CASE ステートメントを SUM 句および GROUP BY 句と組み合わせて使用します。
選択する 注文.customer_id、 和 ( 注文数量 * 注文価格 * ( 場合 カウントするとき ( * ) > 2 それから 0.9 それ以外 1 終わり ) ) として 注文の合計売上高;
この例では、SQL CASE ステートメントを使用して、顧客が 3 つ以上の注文をしたかどうかを確認します。
顧客が 3 つ以上の注文を行った場合、total_sales に 0.9 を乗算し、10% の割引が適用されます。
結論
SQL CASE ステートメントを SUM() および GROUP BY 句とともに使用する方法について説明しました。