SQL 刷题/【京东】查询下单次数最多的商品
上一题下一题简单通过率 67%

【京东】查询下单次数最多的商品

WHERE 条件JOIN 连接聚合函数GROUP BYORDER BYDISTINCT营收统计面试真题

题目描述

来源:京东 SQL 面试真题

某支付 App 会在客户端记录支付流程日志。完整支付流程可能包含选择支付方式、下单、开始支付、支付失败和支付结束等步骤。现在需要找出下单订单数最多的商品。

数据表

user_client_log 客户端日志表

字段类型说明
trace_idVARCHAR订单号
uidBIGINT用户 ID
logtimeDATETIME客户端事件发生时间
stepVARCHAR客户端步骤,如 select、order、start、failed、end
product_idVARCHAR商品 ID
pay_methodVARCHAR支付方式,可为空

product_info 商品信息表

字段类型说明
product_idVARCHAR商品 ID,主键
priceDECIMAL商品价格
typeVARCHAR商品类型
product_nameVARCHAR商品名称

统计口径

  • 只统计 step = 'order' 的下单日志。
  • 不要求订单具有完整支付链路;已经下单但随后支付失败的订单仍计入下单数。
  • trace_id 是订单号,同一订单产生重复的 order 日志时只计 1 次。
  • 只统计能在 product_info 中找到的有效商品。

题目要求

  • 按去重下单订单数降序排列。
  • 若多个商品下单数相同,按 product_id 升序排列。
  • 只返回排序后的第一个商品 ID。
  • 没有下单日志时不返回记录。

期望输出列

列名说明
product_id下单订单数最多的商品 ID

数据样例

当前运行环境
trace_idVARCHAR(50)uidBIGINTlogtimeDATETIMEstepVARCHAR(20)product_idVARCHAR(32)pay_methodVARCHAR(20)
T10011012022-01-01 09:00:00selectP1001wx
T10011012022-01-01 09:00:05orderP1001wx
T10011012022-01-01 09:00:06orderP1001wx
T10011012022-01-01 09:00:10startP1001wx
T10011012022-01-01 09:01:00endP1001wx
T10021022022-01-01 09:10:00orderP1001alipay
T10021022022-01-01 09:10:30failedP1001alipay
T10031032022-01-01 09:20:00orderP1002wx
输入数据显示 8 / 15
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

运行你的 SQL 查询后,结果将显示在这里