You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SAP HANA SQL按用户分组取最大qty、同qty取最大no的实现问题

问题原因

原有写法的子查询仅过滤掉了非最大qty的行,但同一个用户存在多条相同最大qty的记录时,子查询会返回多行,和表B关联后就会出现重复数据。

正确实现方案

使用ROW_NUMBER()窗口函数按用户分组,先按qty倒序排序,同qty时按no倒序排序,取每组排名第一的记录即可:

SELECT
    B.id,
    B.user,
    A.no
FROM
    B
LEFT JOIN (
    SELECT 
        user,
        no,
        ROW_NUMBER() OVER (
            PARTITION BY user 
            ORDER BY qty DESC, no DESC
        ) AS rn
    FROM A
) A ON A.user = B.user AND A.rn = 1;

如果需要兼容有多条完全相同qty和no的场景,也可以用聚合函数的方式实现:

SELECT
    B.id,
    B.user,
    C.max_no
FROM
    B
LEFT JOIN (
    SELECT
        user,
        MAX(no) AS max_no
    FROM (
        SELECT 
            user,
            no,
            qty,
            MAX(qty) OVER (PARTITION BY user) AS max_qty
        FROM A
    ) T
    WHERE qty = max_qty
    GROUP BY user
) C ON C.user = B.user;

内容的提问来源于stack exchange,提问作者YuTing

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 08:24:03