一文帶你了解如何用SQL處理周報數據

猴子數據分析 發佈 2022-08-19T11:17:33.190817+00:00

【題目】某公司資料庫有三張表,周度銷售表、店鋪信息表、日銷售明細表。表一:周度銷售表記錄了每個自然周全國店鋪的銷售信息,欄位包含了周、店鋪代碼、吊牌金額、銷售金額。表二:店鋪信息表記錄店鋪所在的區域,店鋪對應的層級關係及業務類型,欄位包含店鋪代碼、區域、上級客戶簡稱、業務類型。


【題目】

某公司資料庫有三張表,周度銷售表、店鋪信息表、日銷售明細表。


表一:周度銷售表記錄了每個自然周全國店鋪的銷售信息,欄位包含了周、店鋪代碼、吊牌金額、銷售金額。


表二:店鋪信息表記錄店鋪所在的區域,店鋪對應的層級關係及業務類型,欄位包含店鋪代碼、區域、上級客戶簡稱、業務類型。


表三:日銷售明細表記錄了每天全國不同區域的店鋪銷售商品的金額,客戶性質及商品信息,欄位包含區域、上級客戶簡稱、上級客戶代碼、客戶性質、店鋪代碼、銷售日期、銷售金額、商品編碼。

業務需求:

1.對於不同區域、業務類型的吊牌金額、銷售金額進行匯總(時間範圍202201-202205周。

2.抽取區域為華東區、華中區、華西區、華南區的,並且客戶性質為自營的,2022年3月及同期的日銷售數據。


【解題思路】

1.對於不同區域、業務類型的吊牌金額、銷售金額進行匯總(時間範圍202201-202205周)


我們先來把這個業務需求翻譯成大白話:

1)查詢結果需要的欄位是區域、業務類型、吊牌金額、銷售金額

2)篩選時間周為202201-202205

3)對於不同區域、業務類型的吊牌金額、銷售金額進行匯總


1)查詢結果需要的欄位是區域、業務類型、吊牌金額、銷售金額


吊牌金額、銷售金額在周度銷售表中,區域、業務類型在店鋪信息表中,涉及到兩個表的欄位,所以需要進行多表聯結。

觀察兩個表,得知兩表的名稱相同且有關聯的欄位為店鋪代碼,用店鋪代碼聯結兩張表。

使用哪種聯結呢?拿出《猴子 從零學會SQL》裡面的多表聯結圖。



因為需要得到每個店鋪代碼對應的業務類型,所以用左連接保留周度銷售表中所有的銷售數據。


SQL書寫如下:


2)篩選時間周為202201-202205,使用between 函數來篩選時間範圍。


SQL書寫如下:

查詢結果:



3)對於不同區域、業務類型的吊牌金額、銷售金額進行匯總


業務需求僅顯示吊牌金額和銷售金額,我們使用分組匯總來對不同區域、業務類分組 (group by),對吊牌金額、銷售金額進行匯總求和(求和函數sum)


SQL書寫如下:

查詢結果:

2、抽取區域為華東區、華中區、華西區、華南區的,並且客戶性質為自營的,2022年3月及同期的日銷售數據。


需求顯示欄位區域、客戶性質、銷售日期,日銷售明細表都包含,現在只需要將客戶性質為「自營」和時間為2022年3月及2021年3月(同期)數據顯示即可。


SQL中使用date_format將日銷售表中的銷售日期格式設置為年月格式。




SQL書寫如下:


查詢結果:


【本題考點】


1.業務需求拆解為一個個問題,試著翻譯成大白話,根據需求找出連接與突破點。

2.SQL中最常見的幾種聯結應該如何使用,學習參考猴子免費教程《圖解SQL面試題》。

3.數據表中日期格式如果不是我們想要的呈現結果,學會date_format函數進行轉化。




關鍵字: