SQL 刷题/【阿里巴巴】计算订单日志链路平均时间差
上一题下一题中等通过率 100%

【阿里巴巴】计算订单日志链路平均时间差

JOIN 连接聚合函数日期函数漏斗分析面试真题

题目描述

来源:阿里巴巴 SQL 面试真题

某公司需要分析支付订单的客户端日志链路。order_log 记录玩家创建订单的日志,select_log 记录玩家选择支付方式的日志。请计算同一订单在两类日志之间的平均采集时间差。

数据表

order_log 创建订单日志表

字段类型说明
order_idVARCHAR订单号
uidVARCHAR用户 ID
logtimeDATETIME日志采集时间
timeDATETIME客户端记录时间
product_idVARCHAR商品 ID
pay_methodVARCHAR支付方式;创建订单时可能为空

select_log 选择支付方式日志表

字段类型说明
order_idVARCHAR订单号
uidVARCHAR用户 ID
logtimeDATETIME日志采集时间
timeDATETIME客户端记录时间
product_idVARCHAR商品 ID
pay_methodVARCHAR用户选择的支付方式

题目要求

  • 从订单链路出发,按 order_id 关联 order_log 和 select_log。
  • 使用 logtime 计算两类日志之间的秒数差,不使用客户端记录时间 time。
  • logtime 可能局部乱序,因此需要对时间差取绝对值。
  • 对所有匹配订单的绝对时间差求平均值,四舍五入后以整数形式返回。
  • logtime 无需考虑 NULL。

期望输出列

列名说明
gap两类订单日志平均绝对时间差,单位为秒

数据样例

当前运行环境
order_idPKVARCHAR(50)uidVARCHAR(50)logtimeDATETIMEtimeDATETIMEproduct_idVARCHAR(50)pay_methodVARCHAR(50)
aaaauser_00012021-01-01 10:00:002021-01-01 10:00:00p599NULL
bbbbuser_00062022-01-01 09:59:582021-01-01 09:59:58p599NULL
ccccuser_00062022-01-01 09:59:582021-01-01 09:59:58p599NULL
输入数据显示 3 / 3
SQL 编辑器正在保存草稿...
正在加载 SQL 编辑器...

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