数据开发工程师面试题:查询用户最近订单信息和总订单金额
题目:有一个存储用户订单信息的表,包含以下字段:订单编号、用户编号、订单金额、订单时间。现在需要编写一个 SQL 查询语句,查询出每个用户最近一次订单的订单编号、订单金额、订单时间以及该用户的总订单金额。
答案:
SELECT
t1.订单编号,
t1.订单金额,
t1.订单时间,
t2.总订单金额
FROM
订单表 t1
INNER JOIN (
SELECT
用户编号,
SUM(订单金额) AS 总订单金额,
MAX(订单时间) AS 最近订单时间
FROM
订单表
GROUP BY
用户编号
) t2 ON t1.用户编号 = t2.用户编号 AND t1.订单时间 = t2.最近订单时间
解析: 首先在订单表中,使用子查询按照用户编号进行分组,并计算每个用户的总订单金额和最近订单时间。然后在主查询中,使用 INNER JOIN 连接订单表和子查询的结果集,通过用户编号和最近订单时间进行匹配,得到每个用户最近一次订单的订单编号、订单金额、订单时间以及该用户的总订单金额。
原文地址: https://www.cveoy.top/t/topic/mZAj 著作权归作者所有。请勿转载和采集!