【携程】统计指定日期下单用户的访问次数
JOIN 连接聚合函数GROUP BY子查询日期函数DISTINCT用户行为分析面试真题
题目描述
来源:携程 SQL 面试真题
某商城需要查询 2022 年 9 月 2 日下单用户在当天的访问次数。
数据表
order_tb 订单信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | BIGINT | 订单 ID |
| user_id | BIGINT | 用户 ID |
| order_price | DECIMAL | 订单金额 |
| order_time | DATETIME | 订单创建时间 |
visit_tb 用户访问信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| info_id | BIGINT | 访问信息 ID |
| user_id | BIGINT | 用户 ID |
| visit_time | DATETIME | 访问时间 |
| leave_time | DATETIME | 离开时间 |
统计口径
- 先找出 2022 年 9 月 2 日至少下过一笔订单的用户。
- 同一用户当天下多笔订单时,在下单用户集合中只保留一次。
- 访问次数按 2022 年 9 月 2 日的访问记录行数统计,一次“访问至离开”计 1 次。
- 当天下单但没有访问记录的用户也需要输出,访问次数记为 0。
题目要求
- 输出用户 ID 和当天访问次数。
- 按访问次数降序排列;访问次数相同时按 user_id 升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| user_id | 2022 年 9 月 2 日下单的用户 ID |
| visit_nums | 该用户在 2022 年 9 月 2 日的访问次数 |
数据样例
| order_idPKBIGINT | user_idBIGINT | order_priceDECIMAL(12, 2) | order_timeDATETIME |
|---|---|---|---|
| 101 | 11 | 380 | 2022-09-01 09:00:00 |
| 102 | 12 | 200 | 2022-09-01 10:00:00 |
| 103 | 13 | 260 | 2022-09-01 12:00:00 |
| 104 | 11 | 100 | 2022-09-02 11:00:00 |
| 105 | 12 | 150 | 2022-09-02 12:00:00 |
| 106 | 12 | 1200 | 2022-09-02 13:00:00 |
| 107 | 11 | 60 | 2022-09-03 09:00:00 |
| 108 | 13 | 380 | 2022-09-03 09:30:00 |
输入数据显示 8 / 8 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里