sql根据类别拆分上下级_运用SQL对黑五销售数据进行分析
數據來源:https://www.kaggle.com/mehdidag/black-friday
- 提出問題:
- 理解數據
User_ID——用戶ID
Product_ID——商品ID
Gender——性別
Age——年齡
Occupation——職業
City_Category——城市
Stay_In_Current_City_Years——居住多少年
Marital_Status——是否婚配
Product_Category_1——產品類別1
Product_Category_2——產品類別2
Product_Category_3——產品類別3
Purchase——花費
- 數據導入
從KAGGLE下載的是CSV,但是這回要用到的工具是MYSQL:
直接導入,這里比官方的方法(https://dev.mysql.com/doc/workbench/en/wb-admin-export-import-table.html),要快很多。
- 數據清洗
ALTER TABLE blackfriday CHANGE Purchase 花費 varchar(255)
這里可以看到只有最后兩個缺失。
查詢語句:
SELECT COUNT(用戶ID),COUNT(商品ID),COUNT(性別),COUNT(年齡),COUNT(職業),COUNT(城市),COUNT(居住多少年),COUNT(是否婚配),COUNT(產品類別1),COUNT(產品類別2),COUNT(產品類別3),COUNT(花費) FROM blackfriday
4.這里是產品類別,理應用0填充(單獨摘出不影響其他結果),不過為防止其他類別占用0,這里先查下
這是查詢結果:
6 14
14
2
……
左側為產品類別2,右側為產品類別3.為節省版面,大部分數據進行隱藏處理。
SQL語句:
SELECT DISTINCT 產品類別2,產品類別3 FROM blackfriday
0未被占用,用0代替NULL。
SQL語句:
UPDATE blackfriday SET 產品類別2 = 0 WHERE 產品類別2 IS NULL
UPDATE blackfriday SET `產品類別3` = 0 WHERE `產品類別3` IS NULL;
篩選NULL要用IS。
- 一致化命名
例如0-17這樣的,改成
推算最小年齡 推算最大年齡
0 17
步驟1——這里先新建兩列,在年齡列后面
SQL語句:
ALTER TABLE blackfriday ADD COLUMN 推算最小年齡 VARCHAR(20) NOT NULL AFTER 年齡
ALTER TABLE blackfriday ADD COLUMN 推算最大年齡 VARCHAR(20) NOT NULL AFTER 推算最小年齡
注:
對SQL尚未爐火純青時,最好小心為上,執行代碼前檢查,并且預先備份SQL文件。
并且實際工作中最好不要用漢字命名列名。
步驟2——復制和文本處理
SQL語句:
UPDATE blackfriday SET `推算最小年齡` = (SELECT SUBSTRING_INDEX(`年齡`,'-',1))
可以看到還不完美,有 + 符號,還得接著對列內文字進行處理。
SQL語句:
UPDATE blackfriday SET `推算最小年齡` = REPLACE(`推算最小年齡`,'+','')
OK,在接下來對著推算最大年齡列也是一致化處理操作。
SQL語句:
UPDATE blackfriday SET `推算最大年齡` = (SELECT SUBSTRING_INDEX(`年齡`,'-',-1))
同樣,對 + 進行處理
SQL語句:
UPDATE blackfriday SET `推算最大年齡` = REPLACE(`推算最大年齡`,'+','')
OK,還剩最后一步。
步驟3——刪除無用列
ALTER TABLE blackfriday DROP 年齡
OK,清洗數據完畢,開始解決問題!
SQL代碼:
SELECT COUNT(DISTINCT `用戶ID`) FROM blackfriday
一共有5891名用戶在黑五進行購買。
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,SUM(`花費`) FROM blackfriday
GROUP BY `推算最小年齡`,`推算最大年齡`
ORDER BY SUM(`花費`)
可以看到26~35年齡段消費能力最強,猜測是處于事業已經發展起來,所以購買力最強。
其次是36~45中年人,再其次是18~25的年輕人群。
建議后續廣告投放細致化分類化,針對購買力最強的三類年齡層次的人進行定制化優惠,廣告資源對其進行傾斜,分類對其投放對應年齡段的廣告資源。
未婚消費數據:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,SUM(`花費`) FROM blackfriday
WHERE `是否婚配` = 0
GROUP BY `推算最小年齡`,`推算最大年齡`
ORDER BY SUM(`花費`)
以婚消費數據:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,SUM(`花費`) FROM blackfriday
WHERE `是否婚配` = 1
GROUP BY `推算最小年齡`,`推算最大年齡`
ORDER BY SUM(`花費`)
左側為未婚人群消費數據,右側為已婚,婚姻果然是單身生活的墳墓。
已經結婚的年齡端人群(26~35,36~45,18~25,)消費力遠低于未結婚的同年齡段人群。
當然,也有反例。已婚的(46~50,51~55,55+)的年齡人群購買力超過同年齡段未婚人群。
那么,可以對未婚的(26~35,18~25,36~45)年齡人群進行分類廣告投放,進行資源傾斜。這類人群購買力比較高。
當然,已婚的(46~50,51~55,55+)的年齡人群也可以對其進行廣告資源傾斜,這類購買力比同年齡段的未婚人群高。
0~17歲人群喜好產品分析:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,`商品ID`,COUNT(`商品ID`) FROM blackfriday
WHERE `推算最小年齡` = 0
GROUP BY `推算最小年齡`,`推算最大年齡`,`商品ID`
ORDER BY COUNT(`商品ID`) DESC
0-17消費力偏低,從箱型圖來看,大多數商品銷量在10以下,可以考慮對銷量8以上的貨品,根據是否有歷史瀏覽記錄搜索記錄,進行對這一年齡人群的廣告投放。
18~25歲人群喜好產品分析:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,`商品ID`,COUNT(`商品ID`) FROM blackfriday
WHERE `推算最小年齡` = 18
GROUP BY `推算最小年齡`,`推算最大年齡`,`商品ID`
ORDER BY COUNT(`商品ID`) DESC
18-25消費力稍高,從箱型圖來看,大多數商品銷量在40以下,可以考慮對銷量40以上的貨品,根據是否有歷史瀏覽記錄搜索記錄,進行對這一年齡人群的廣告投放。
26~25歲人群喜好產品分析:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,`商品ID`,COUNT(`商品ID`) FROM blackfriday
WHERE `推算最小年齡` = 26
GROUP BY `推算最小年齡`,`推算最大年齡`,`商品ID`
ORDER BY COUNT(`商品ID`) DESC
26~35消費力最高,從箱型圖來看,大多數商品銷量在90以下,可以考慮對銷量90以上的貨品,根據是否有歷史瀏覽記錄搜索記錄,進行對這一年齡人群的廣告投放。
36~45歲人群喜好產品分析:
SQL代碼:
SELECT `推算最小年齡`,`推算最大年齡`,`商品ID`,COUNT(`商品ID`) FROM blackfriday
WHERE `推算最小年齡` = 36
GROUP BY `推算最小年齡`,`推算最大年齡`,`商品ID`
ORDER BY COUNT(`商品ID`) DESC
36~45消費力走低,從箱型圖來看,大多數商品銷量在40以下,可以考慮對銷量40以上的貨品,根據是否有歷史瀏覽記錄搜索記錄,進行對這一年齡人群的廣告投放。
55歲以及55歲以上人群喜好產品分析:
36~45消費力走低,從箱型圖來看,大多數商品銷量在40以下,可以考慮對銷量40以上的貨品,根據是否有歷史瀏覽記錄搜索記錄,進行對這一年齡人群的廣告投放。
綜合分析:
SQL代碼:
SELECT
`推算最小年齡`,
`推算最大年齡`,
COUNT(DISTINCT `用戶ID`) AS 購買用戶數量,
SUM(`花費`) AS 購買用戶金額,
SUM(`花費`) / COUNT(DISTINCT `用戶ID`) AS 客單價
FROM
blackfriday
GROUP BY
`推算最小年齡`,
`推算最大年齡` -- ORDER BY COUNT(`商品ID`) DESC
從圖標中看出,18~25,26~35,36~45的購買用戶金額和客單價遠高于其他用戶,用戶數量也是這三個年齡層次段的占據了大多數。
廣告資源傾斜以及其他配套方案應著重于這三個年齡端人群。
客單價存疑,應該不會有這么高的客單價。尤其是黑五折扣日。
SQL代碼:
SELECT
`職業`,
SUM(`花費`) AS 職業消費金額
FROM
blackfriday
GROUP BY `職業`
ORDER BY SUM(`花費`) DESC
代碼為4的職業消費情況最高,其次為0,即沒有設置職業的用戶。
箱型圖來看的話,大部分都在職業都在總消費水平在200000000以下,可以根據客單價情況以及職業人群總消費情況進行分類推送不同客單價的產品。
SQL代碼:
SELECT
`商品ID`,
COUNT(`商品ID`) AS 商品銷售件數,
SUM(`花費`) AS 商品銷售額,
SUM(`花費`)/COUNT(`商品ID`) AS 商品價格
FROM
blackfriday
GROUP BY `商品ID`
ORDER BY COUNT(`商品ID`) DESC
總結
以上是生活随笔為你收集整理的sql根据类别拆分上下级_运用SQL对黑五销售数据进行分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 当导用模块与包的import与from的
- 下一篇: mysql用户的权限分配