【发布时间】:2012-05-08 16:40:36
【问题描述】:
我的桌子:
ID NUM VAL
1 1 Hello
1 2 Goodbye
2 2 Hey
2 4 What's up?
3 5 See you
如果我想返回每个 ID 的最大数量,那真的很干净:
SELECT MAX(NUM) FROM table GROUP BY (ID)
但是,如果我想获取与每个 ID 的每个数字的最大值相关的值怎么办?
为什么我做不到:
SELECT MAX(NUM) OVER (ORDER BY NUM) FROM table GROUP BY (ID)
为什么这是一个错误?我希望这个选择按 ID 分组,而不是为每个窗口单独分区...
编辑:错误是“不是 GROUP BY 表达式”。
【问题讨论】:
-
我们无法从这里看到您的错误消息。
-
你能显示你期望的输出吗,描述对我来说没有意义......
I want to grab the value associated with the max of each number for each ID。我也不确定 ORDER BY 会对 MAX() 函数产生什么影响... -
不是这个问题的确切答案,但可以在orafaq 找到有关 oracle 分析函数的良好介绍。这篇文章通过简单的例子帮助理解这些概念。
标签: sql oracle greatest-n-per-group