本文主要通过MySQL对数据库进行特定场景查询,
例如对用户留存,商品回购率和复购率的探索。
场景一:在一份销售表中,我们需要提取上一个月付款用户量最高的三天是哪三天?并查询昨天每个用户最后的付款订单ID和金额。
SELECT DATA_FORMAT(pay_time,'%Y-%m-%d') AS pay_date,
COUNT(DISTINCT user_id) AS user_count
FROM Orders
WHERE order_amount>0
AND MONTH(pay_date)=MONTH(NOW())-1
GROUP BY pay_date
ORDER BY user_count DESC
LIMIT 3;
在这份销售数据中,我们主要需要的是order_id(订单ID),user_id(客户ID),pay_time(交易时间),order_amount(交易金额)。由于一天中可能有客户多次购买,所以需要对客户进行去重处理,另外对月份进行定位(上一个月),和过滤付款用户。然后进行排序直接锁定付款用户量最高的三天。
SELECT user_id,order_id,order_amount
FROM Orders
WHERE DATE_FORMAT(pay_time,'%Y-%m-%d')=DATE_SUB(CURDATE(),interval 1 day)
AND DATE_FORMAT(pay_time,