時間:2023-03-15 23:34:01 | 來源:電子商務
時間:2023-03-15 23:34:01 來源:電子商務
一、背景目標SELECT * FROM UserBehavior_newGROUP BY user_id, item_id, cat_id, behavior, timestampsHAVING COUNT(*) > 1;
2.2 檢查缺失值:未發(fā)現缺失值。SELECT COUNT(user_id), COUNT(item_id), COUNT(cat_id), COUNT(behavior), COUNT(timestamps)FROM UserBehavior_newWHERE user_id IS NULLOR item_id IS NULLOR cat_id IS NULLOR behavior IS NULLOR timestamps IS NULL;
2.3 預處理:-- 1.將時間戳轉化為日期格式ALTER TABLE UserBehavior_new ADD COLUMN datetime VARCHAR(256);UPDATE UserBehavior_new SET datetime = FROM_UNIXTIME(timestamps);ALTER TABLE UserBehavior_new ADD COLUMN date VARCHAR(256);UPDATE UserBehavior_new SET date = FROM_UNIXTIME(timestamps, '%Y-%m-%d');ALTER TABLE UserBehavior_new ADD COLUMN time VARCHAR(256);UPDATE UserBehavior_new SET time = FROM_UNIXTIME(timestamps, '%H-%i-%s');
-- 2.確保所有用戶行為發(fā)生在2017/11/25-2017/12/03期間SELECT date FROM UserBehavior_new WHERE date < '2017-11-25' or date > '2017-12-03';-- 刪除異常數據DELETE FROM UserBehavior_new WHERE date < '2017-11-25' or date > '2017-12-03';
三、數據分析-- 1.頁面瀏覽量(PV):895636SELECT COUNT(behavior) AS PV FROM UserBehavior_new WHERE behavior = 'pv';-- 2.頁面訪客數(UV):9739SELECT COUNT(DISTINCT user_id) AS UV FROM UserBehavior_new;-- 3.平均頁面訪客數 = PV/UV :92-- 4.以日期為基準對各指標變化情況的分析CREATE VIEW UserBehavior_date AS SELECT date, SUM(CASE WHEN behavior = 'pv' THEN 1 ELSE 0 END) AS '瀏覽量',SUM(CASE WHEN behavior = 'cart' THEN 1 ELSE 0 END) AS '加購量',SUM(CASE WHEN behavior = 'fav' THEN 1 ELSE 0 END) AS '收藏量',SUM(CASE WHEN behavior = 'buy' THEN 1 ELSE 0 END) AS '購買量'FROM UserBehavior_newGROUP BY dateORDER BY date;
-- 5.以時間為基準對各指標變化情況的分析CREATE VIEW UserBehavior_time AS SELECT time,SUM(CASE WHEN behavior = 'PV' THEN 1 ELSE 0 END) AS '瀏覽量',SUM(CASE WHEN behavior = 'cart' THEN 1 ELSE 0 END) AS '加購量',SUM(CASE WHEN behavior = 'fav' THEN 1 ELSE 0 END) AS '收藏量',SUM(CASE WHEN behavior = 'buy' THEN 1 ELSE 0 END) AS '購買量'FROM UserBehavior_newGROUP BY timeORDER BY time;
-- 6.用戶整體行為SELECT SUM(總量) AS 總量, SUM(瀏覽量) AS 瀏覽量, SUM(加購量) AS 加購量,SUM(收藏量) AS 收藏量, SUM(購買量) AS 購買量 FROM UserBehavior_view;SELECT CONCAT(ROUND(SUM(瀏覽量)/SUM(總量)*100,2),'%') AS 瀏覽轉化率,CONCAT(ROUND((SUM(加購量)+SUM(收藏量))/SUM(總量)*100,2),'%') AS '加購/收藏轉化率',CONCAT(ROUND(SUM(購買量)/SUM(總量)*100,2),'%') AS 購買轉化率FROM UserBehavior_view;
-- 7.用戶各環(huán)節(jié)行為路徑SELECT SUM(CASE WHEN 瀏覽量 > 0 THEN 1 ELSE 0 END) AS '瀏覽量',SUM(CASE WHEN 瀏覽量 > 0 AND 購買量 > 0 AND 加購量 = 0 AND 收藏量 = 0 THEN 1 ELSE 0 END) AS '瀏覽→購買',SUM(CASE WHEN 瀏覽量 > 0 AND (加購量 > 0 OR 收藏量 > 0) THEN 1 ELSE 0 END) AS '瀏覽→加購/收藏',SUM(CASE WHEN 瀏覽量 > 0 AND 購買量 = 0 AND 加購量 = 0 AND 收藏量 = 0 THEN 1 ELSE 0 END) AS '瀏覽→流失',SUM(CASE WHEN 瀏覽量 > 0 AND (加購量 > 0 OR 收藏量 > 0) AND 購買量 > 0 THEN 1 ELSE 0 END) AS '瀏覽→加購/收藏→購買',SUM(CASE WHEN 瀏覽量 > 0 AND (加購量 > 0 OR 收藏量 > 0) AND 購買量 = 0 THEN 1 ELSE 0 END) AS '瀏覽→加購/收藏→流失'FROM UserBehavior_view;
-- 根據cat_id創(chuàng)建視圖CREATE VIEW pv_top10_cat ASSELECT cat_id, COUNT(*) AS 瀏覽量TOP10 FROM UserBehavior_newWHERE behavior = 'pv'GROUP BY cat_idORDER BY COUNT(*) DESCLIMIT 10;CREATE VIEW buy_top10_cat ASSELECT cat_id, COUNT(*) AS 購買量TOP10 FROM UserBehavior_newWHERE behavior = 'buy'GROUP BY cat_idORDER BY COUNT(*) DESCLIMIT 10;-- 根據item_id創(chuàng)建視圖CREATE VIEW pv_top10_item ASSELECT item_id, COUNT(*) AS 瀏覽量TOP10 FROM UserBehavior_newWHERE behavior = 'pv'GROUP BY item_idORDER BY COUNT(*) DESCLIMIT 10;CREATE VIEW buy_top10_item ASSELECT item_id, COUNT(*) AS 購買量TOP10 FROM UserBehavior_newWHERE behavior = 'buy'GROUP BY item_idORDER BY COUNT(*) DESCLIMIT 10;
SELECT COUNT(DISTINCT cat_id) AS 商品類目數量,COUNT(DISTINCT item_id) AS 商品數量FROM UserBehavior_new;
SELECT a.購買次數, COUNT(a.item_id) AS 商品數,CONCAT(ROUND(COUNT(a.item_id) / (SELECT COUNT(DISTINCT item_id) FROM UserBehavior_new WHERE behavior = 'buy') *100, 2), '%') AS 占比FROM (SELECT item_id, COUNT(*) AS 購買次數 FROM UserBehavior_new WHERE behavior = 'buy' GROUP BY item_id) AS aGROUP BY a.購買次數ORDER BY a.購買次數;
-- 1.總訂單量:20359-- 人均購買量 = 總訂單量/總用戶數 : 2.09SELECT COUNT(behavior) FROM UserBehavior_newWHERE behavior = 'buy';-- 2.復購率CREATE VIEW buy_f_view(user_id, frequency) ASSELECT user_id, COUNT(behavior) AS frequency FROM UserBehavior_newWHERE behavior = 'buy'GROUP BY user_idORDER BY frequency;
-- 1.計算R、F值,并按價值打分CREATE VIEW rf AS SELECT a.*,(CASE WHEN R > 8 THEN 1WHEN R BETWEEN 7 AND 8 THEN 2WHEN R BETWEEN 5 AND 6 THEN 3WHEN R BETWEEN 3 AND 4 THEN 4WHEN R < 3 THEN 5 ELSE 0 END) AS R_scores,(CASE WHEN F < 2 THEN 1WHEN F BETWEEN 2 AND 4 THEN 2WHEN F BETWEEN 5 AND 10 THEN 3WHEN F BETWEEN 11 AND 20 THEN 4WHEN F > 20 THEN 5 ELSE 0 END) AS F_scoresFROM (SELECT user_id, DATEDIFF('2017-12-03', MAX(date)) AS R, COUNT(*) AS FFROM UserBehavior_newWHERE behavior = 'buy'GROUP BY user_id) AS a;
-- 2.計算打分的平均值SELECT AVG(R_SCORES) AS avg_r, AVG(F_scores) AS avg_f FROM rf;
-- 3.按照R值和F值的平均分對用戶進行分類,并統(tǒng)計SELECT 用戶分類, COUNT(*) AS 用戶數 FROM(SELECT user_id, R值, F值,(CASE WHEN R值='高' AND F值='高' THEN '重要價值客戶'WHEN R值='高' AND F值='低' THEN '重要發(fā)展客戶'WHEN R值='低' AND F值='高' THEN '重要保持展客戶'WHEN R值='低' AND F值='低' THEN '一般價值客戶' ELSE 0 END) AS 用戶分類FROM (SELECT user_id, R_scores, F_scores,(CASE WHEN R_scores > 4.2625 THEN '高' ELSE '低' END) AS R值,(CASE WHEN F_scores > 1.8710 THEN '高' ELSE '低' END) AS F值FROM rf) AS a) AS bGROUP BY 用戶分類ORDER BY 用戶數 DESC;
關鍵詞:數據,分析,報告,用戶