校招算法笔面试 | SQL笔试面试编程题-查询下订单用户访问次数?

SQL笔面试:查询下单用户当日访问次数

题目

题目链接

这道题目要求我们查询在2022年9月2日下订单的用户在同一天的访问次数。我们要做的事情如下:

1. 确定总体问题

我们需要找出在2022年9月2日下订单的用户,并计算这些用户在同一天的访问次数,并按访问次数降序排序。

2. 分析关键问题
  • 识别下订单的用户:找出在2022年9月2日下订单的用户。
  • 连接表:将识别出的用户与访问信息表连接,以便获取访问记录。
  • 统计访问次数:计算每个用户的访问次数。
  • 排序输出:按访问次数降序排序。
3. 解决每个关键问题的代码及讲解
步骤1:识别下订单的用户

我们使用子查询找出在2022年9月2日下订单的用户:

SELECT DISTINCT user_id 
 FROM order_tb 
 WHERE DATE(order_time) = '2022-09-02'
  • SELECT DISTINCT user_id: 提取在指定日期下订单的用户ID,并去重。
  • WHERE DATE(order_time) = '2022-09-02': 过滤出订单日期为2022年9月2日的记录。
步骤2:连接表

将识别出的用户与访问信息表连接:

JOIN 
(SELECT DISTINCT user_id 
 FROM order_tb 
 WHERE DATE(order_time) = '2022-09-02') 
ON 
v.user_id = o.user_id
  • JOIN ... ON v.user_id = o.user_id: 通过用户ID连接子查询结果和访问信息表。
步骤3:统计访问次数

计算每个用户的访问次数:

COUNT(v.info_id) AS visit_nums
  • COUNT(v.info_id): 计算每个用户的访问记录数量,表示访问次数。
步骤4:排序输出

按访问次数降序排序输出结果:

ORDER BY 
visit_nums DESC
  • ORDER BY visit_nums DESC: 按访问次数降序排序。

完整代码

SELECT 
    v.user_id,
    COUNT(v.info_id) AS visit_nums
FROM 
    visit_tb v
JOIN 
    (SELECT DISTINCT user_id 
     FROM order_tb 
     WHERE DATE(order_time) = '2022-09-02') o
ON 
    v.user_id = o.user_id
WHERE 
    DATE(v.visit_time) = '2022-09-02'
GROUP BY 
    v.user_id
ORDER BY 
    visit_nums DESC;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值