Menu
Coddy logo textTech

行を列にピボット

CoddyのSQLジャーニー「応用」セクションの一部。レッスン 14/27。

条件付き集計と GROUP BY を組み合わせて、行を列に変換します。これはスプレッドシートのピボットテーブルに相当する SQL 版です。

sales(month, product, units) のような行があるとします。月ごとに1行、商品ごとに1列を表示するには:

SELECT
    month,
    SUM(CASE WHEN product = 'A' THEN units ELSE 0 END) AS product_a,
    SUM(CASE WHEN product = 'B' THEN units ELSE 0 END) AS product_b
FROM sales
GROUP BY month

GROUP BY バケットが各 SUM(CASE …) に対して見るのは、1 か月分の行です。CASE は 1 つの product の部分を選びます。

challenge icon

チャレンジ

簡単

利用可能なテーブルと列:

  • salesmonthproductunits

データをピボットし、各行が1つのmonthとなるように、次の列を含めてください:

  • month
  • apples:その月の商品'apples'の合計units
  • bananas'bananas'についても同様
  • cherries'cherries'についても同様
  • total:その月のすべての商品の合計units

totalが少なくとも20である月のみを返してください。monthの順に並べてください。

自分で試してみよう

SELECT month,
       -- 製品ごとに1つのSUM(CASE ...)、および合計
FROM sales
GROUP BY month
-- 合計 >= 20 の月に絞り込む
ORDER BY month
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

応用のすべてのレッスン

自分で練習してみよう: SQLプレイグラウンド