目的 1: 販売データは Purchases テーブルに格納されます。あなたの営業スタッフは、売上データをピボット形式で四半期ごとに分類して表示したいと考えています。
Purchases テーブルに売上データがない場合は、作成します。データが 4 四半期にわたることを確認してください。次に、データをピボットするクエリを次のように記述します。
Album Q1 Q2 Q3 Q4
OK Computer 2 5 3 7
Sea Change 8 6 2 1
別のテーブルまたはビューを作成しないでください。どのテーブルも変更しないでください。
クエリを dba1lesson10project1.sql として保存し、プロジェクトを渡します。
これが私がしなければならないことです。しかし、私が作業したいテーブルは次のようになります。そして、それは私がそれをまったく変更できないと課題に述べています。
CustomerID DateOfPurchase SongID
1 2007-03-31 3
3 2007-06-30 4
4 2007-09-30 4
5 2007-12-31 5
私が試してみました
SELECT SongID,
SUM(CASE WHEN DateOfPurchase = '2007-03-31' THEN DateOfPurchase ElSE 0 END) AS 'Q1',
SUM(CASE WHEN DateOfPurchase = '2007-06-30' THEN DateOfPurchase ELSE 0 END) AS 'Q2',
SUM(CASE WHEN DateOfPurchase = '2007-09-30' THEN DateOfPurchase ELSE 0 END) AS 'Q3',
SUM(CASE WHEN DateOfPurchase = '2007-12-31' THEN DateOfPurchase ELSE 0 END) AS 'Q4'
FROM Purchases
GROUP BY SongID;
他のバリアントとともに:
SELECT SongID,
SUM(CASE WHEN DateOfPurchase = '2007-03-31' THEN CustomerID ElSE 0 END) AS 'Q1',
SUM(CASE WHEN DateOfPurchase = '2007-06-30' THEN CustomerID ELSE 0 END) AS 'Q2',
SUM(CASE WHEN DateOfPurchase = '2007-09-30' THEN CustomerID ELSE 0 END) AS 'Q3',
SUM(CASE WHEN DateOfPurchase = '2007-12-31' THEN CustomerID ELSE 0 END) AS 'Q4'
FROM Purchases
GROUP BY SongID;
と:
SELECT SongID,
SUM(CASE WHEN DateOfPurchase = '2007-03-31' THEN SongID ElSE 0 END) AS 'Q1',
SUM(CASE WHEN DateOfPurchase = '2007-06-30' THEN SongID ELSE 0 END) AS 'Q2',
SUM(CASE WHEN DateOfPurchase = '2007-09-30' THEN SongID ELSE 0 END) AS 'Q3',
SUM(CASE WHEN DateOfPurchase = '2007-12-31' THEN SongID ELSE 0 END) AS 'Q4'
FROM Purchases
GROUP BY SongID;
どちらが、最後の 2 つで、必要なものがほとんど得られます。ただし、SongID および Quarter ごとに購入できるのは 1 回だけです。代わりに、CustomerID または SongID のいずれかが表示されます。私は自分が何をする必要があるかについて基本的な理解を持っています。しかし、テーブルを変更して実際に購入した回数を表示することができないため、どうすればよいかわかりません。助言がありますか?