gpt4 book ai didi

sql - Oracle SQL -- 一个组上的分析函数?

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

我的表:

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 表达式”。

最佳答案

您可能可以使用 MAX() KEEP(DENSE_RANK LAST...)功能:

with sample_data as (
select 1 id, 1 num, 'Hello' val from dual union all
select 1 id, 2 num, 'Goodbye' val from dual union all
select 2 id, 2 num, 'Hey' val from dual union all
select 2 id, 4 num, 'What''s up?' val from dual union all
select 3 id, 5 num, 'See you' val from dual)
select id, max(num), max(val) keep (dense_rank last order by num)
from sample_data
group by id;

关于sql - Oracle SQL -- 一个组上的分析函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10358986/

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