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

时间:2012-07-04 15:09:21

标签: sql oracle

我需要为包含5列ID1ID2ID3AB的表编写查询。这里, <{1}},ID1ID2构成主键。

对于每个ID3,找到最大ID1。如果两个或多个A具有最大值,请选择唯一一个具有最大A的记录。最后使用相应的BID2值显示结果。

例如,对于下表

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

1 个答案:

答案 0 :(得分:3)

这要点是

  • 为每一行添加ROW_NUMBER
  • 重新启动每个ID1
  • 的号码
  • ORDERAB上的高到低。
  • 将其放在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