【腾讯】统计未下单用户数量
WHERE 条件聚合函数子查询用户行为分析面试真题
题目描述
来源:腾讯 SQL 面试真题
某支付平台记录了用户信息和用户创建订单的客户端日志。请统计用户信息表中未在订单日志中下单的用户数量。
数据表
order_log 创建订单日志表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | VARCHAR(50) | 订单号 |
| uid | BIGINT | 用户 ID |
| logtime | DATETIME | 日志采集时间 |
| time | DATETIME | 客户端记录时间 |
| product_id | VARCHAR(50) | 商品 ID |
| pay_method | VARCHAR(20) | 支付方式 |
user_info 用户信息表
| 字段 | 类型 | 说明 |
|---|---|---|
| order_id | VARCHAR(50) | 用户信息记录标识 |
| uid | BIGINT | 用户 ID |
| channel | VARCHAR(50) | 用户注册渠道 |
统计口径
- 如果
user_info.uid在order_log.uid中不存在,则该用户计为未下单用户。 - 同一用户可能对应多条用户信息记录,统计时按
uid去重。 order_log中的重复日志不会改变用户是否下过订单的判断。
期望输出列
| 列名 | 说明 |
|---|---|
| user_count | 未下单用户数量 |
数据样例
| order_idVARCHAR(50) | uidBIGINT | logtimeDATETIME | timeDATETIME | product_idVARCHAR(50) | pay_methodVARCHAR(20) |
|---|---|---|---|---|---|
| ORD001 | 101 | 2022-01-01 10:00:00 | 2022-01-01 10:00:00 | P100 | wx |
| ORD002 | 102 | 2022-01-01 10:05:00 | 2022-01-01 10:05:00 | P101 | alipay |
| ORD002 | 102 | 2022-01-01 10:05:01 | 2022-01-01 10:05:01 | P101 | alipay |
| ORD003 | NULL | 2022-01-01 10:10:00 | 2022-01-01 10:10:00 | P102 | NULL |
输入数据显示 4 / 4 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里