hive练习题(二)计算用户的复购率和回购率
生活随笔
收集整理的這篇文章主要介紹了
hive练习题(二)计算用户的复购率和回购率
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
hive練習題(二)計算用戶的復購率和回購率
數據表ods_sales_orders前10行
復購率
定義:在某時間窗口內重復消費用戶(消費兩次及以上的用戶)在總消費用戶中占比
例如,按月作為統計窗口,當前月份購買2次及以上的客戶占當前月份所有客戶的比例。
第一步:計算每位客戶在每月的消費次數
create table temp1 as SELECT customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth, COUNT(customer_key) AS con FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM');第二步:對消費2次及以上的客戶進行統計,并計算復購率
SELECT umonth, SUM(IF(con>1,1,0))AS repurchase_con,COUNT(1) AS customs_con, concat(round(SUM(IF(con>1,1,0))/COUNT(1)*100,2),'%') AS repurchase_ratio FROM temp1 GROUP BY umonth;回購率
定義:是某一個時間窗口內消費的用戶,在下一個時間窗口仍舊消費的占比。
例如,按月作為統計窗口,1月份1000人購買了該產品,在2月份這1000人中的300人繼續購買,則稱1月份的回購率為30%。
第一步:將本月用戶的消費情況和下月用戶的消費情況做連接,連接方式采用左連接
涉及知識點 :concat函數,add_months函數
select * from (SELECT customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM')) as a LEFT JOIN (SELECT customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM')) as b ON a.customer_key = b.customer_key AND CONCAT(a.umonth,'-01')=add_months(CONCAT(b.umonth,'-01'),-1);第二步:計算本月和下月消費用戶數以及相應的回購率
SELECT a.umonth,COUNT(a.customer_key) AS now_count, COUNT(b.customer_key)AS next_count, CONCAT(ROUND(COUNT(b.customer_key)/COUNT(a.customer_key)*100,2),'%')AS ratio FROM (SELECT customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM'))a LEFT JOIN (SELECT customer_key,DATE_FORMAT(create_date,'YYYY-MM') AS umonth FROM ods_sales_orders GROUP BY customer_key,DATE_FORMAT(create_date,'YYYY-MM'))b ON a.customer_key = b.customer_key AND CONCAT(a.umonth,'-01')=add_months(CONCAT(b.umonth,'-01'),-1) GROUP BY a.umonth;總結
以上是生活随笔為你收集整理的hive练习题(二)计算用户的复购率和回购率的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angular+bootstrap+sp
- 下一篇: 递归回溯法求数独全部解