[英]Pivoting Data Using MySql
目標1:您的銷售數據存儲在“購買”表中。 您的銷售人員希望以透視形式查看銷售數據,按季度細分。
如果您的購買表沒有銷售數據,請創建一些。 確保數據跨越四個季度。 接下來,編寫查詢以按如下所示樞轉數據:
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僅購買一次。 他們向我顯示CustomerID或SongID。 我對需要做的事情有基本的了解。 但是,由於無法更改表格以顯示實際上已經進行了多少次購買,因此我不確定該怎么做。 有什么建議么?
您當前的查詢非常接近,我建議您進行一些小的更改。 您正在對日期進行硬編碼,但是如果您在第一季度中有一個不等於2007-03-31
,它將不會顯示,該怎么辦。
我將在MySQL中使用QUARTER()
函數,這將基於日期值返回四分之一至四分之一。
第二,我不認為你需要sum
的SongID
,你的情況我表達將取代SongID
1類似以下內容:
SELECT SongID,
SUM(CASE WHEN Quarter(DateOfPurchase) = 1 THEN 1 ElSE 0 END) AS Q1,
SUM(CASE WHEN Quarter(DateOfPurchase) = 2 THEN 1 ELSE 0 END) AS Q2,
SUM(CASE WHEN Quarter(DateOfPurchase) = 3 THEN 1 ELSE 0 END) AS Q3,
SUM(CASE WHEN Quarter(DateOfPurchase) = 4 THEN 1 ELSE 0 END) AS Q4
FROM Purchases
GROUP BY SongID;
您可以使用MySQL Pivot表生成器輕松地執行此季度報告。 創建報告時,系統會要求您添加“列設置” 請選擇“采購表”作為“ 表 ”,將包含日期值的列作為“ 字段 ”。 選擇日期值后,應該會出現一個功能菜單,請選擇“ Quarter ”,以按照您的要求將數據透視表划分為四分之一。 請注意,如果願意,您可以選擇創建特定年份的報告,在這種情況下,應選中“ 精確年份 ”框並添加特定年份,否則不要選中“ 精確年份 ”框。
最終報告將能夠看到類似此報告的內容:
http://mysqlpivottable.net/MySQL-Pivot-Table-Demo/tables/Quarterly_Sales_Report/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.