题目:有一个存储用户订单信息的表,包含以下字段:订单编号、用户编号、订单金额、订单时间。现在需要编写一个 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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录