始める無料で始める

ユーザー収益を月ごとにピボットする

次に、Eve から、経営陣(Cレベル)は一覧性の高い横長テーブルを好むと聞きました。彼女は、2018年6月から8月の期間について、最初の5人のユーザーIDの収益を詳細に示したサンプルレポートを用意しています。経営陣からは、このテーブルを月ごとにピボットするよう指示があり、あなたにそのタスクが引き継がれました。

ユーザー収益を月ごとにピボットし、行にユーザーID、列に2018年6月から8月までの各月が並ぶようにクエリを書いてください。

この演習はコースの一部です

SQLでビジネスデータを分析する

コースを見る

演習の手順

  • tablefunc から CROSSTAB() を有効にします。
  • 新しいピボットテーブルの列(ユーザーIDと、運用開始後最初の3か月)を宣言します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

-- Import tablefunc
CREATE EXTENSION IF NOT EXISTS ___;

SELECT * FROM CROSSTAB($$
  SELECT
    user_id,
    DATE_TRUNC('month', order_date) :: DATE AS delivr_month,
    SUM(meal_price * order_quantity) :: FLOAT AS revenue
  FROM meals
  JOIN orders ON meals.meal_id = orders.meal_id
 WHERE user_id IN (0, 1, 2, 3, 4)
   AND order_date < '2018-09-01'
 GROUP BY user_id, delivr_month
 ORDER BY user_id, delivr_month;
$$)
-- Select user ID and the months from June to August 2018
AS ct (___ INT,
       ___ FLOAT,
       ___ FLOAT,
       ___ FLOAT)
ORDER BY user_id ASC;
コードを編集して実行