gpt4 book ai didi

sql - 使用 Oracle/SQL group by 查找最大值

转载 作者:行者123 更新时间:2023-12-04 05:40:22 25 4
gpt4 key购买 nike

我需要为一个包含 ID1 的 5 列的表编写一个查询。 , ID2 , ID3 , A , 和 B .在这里,ID1 , ID2 , 和 ID3形成主键。

每个ID1 , 求最大值 A .如果有两个或更多 A s 具有最大值,选择唯一具有最大值的记录 B .最后用对应的ID2显示结果和 ID3值。

例如,对于下表

ID1 ID2 ID3   A  B
1 2 3 10 5
1 3 4 30 4
1 3 5 30 3
2 2 3 5 1
2 3 4 9 2
2 3 5 11 3

查询应显示如下结果。
ID1 ID2 ID3  Max_A  
1 3 4 30
2 3 5 11

最佳答案

这样做的要点是

  • 添加 ROW_NUMBER到每一行
  • 重新启动每个 ID1 的号码
  • ORDER从高到低 AB .
  • 把它放在 CTE方便访问 rn

  • SQL 语句
    ;WITH q AS (
    SELECT *, ROW_NUMBER() OVER (PARTITION BY ID1 ORDER BY A DESC, B DESC) AS rn
    FROM YourTable
    )
    SELECT *
    FROM q
    WHERE rn = 1

    关于sql - 使用 Oracle/SQL group by 查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11331669/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com