Oracle SQL – 分析函数超过一个组?
发布时间:2020-12-12 15:13:02 所属栏目:百科 来源:网络整理
导读:我的桌子: ID NUM VAL1 1 Hello1 2 Goodbye2 2 Hey2 4 What's up?3 5 See you 如果我想要返回每个ID的最大数量,这真的很好,干净: SELECT MAX(NUM) FROM table GROUP BY (ID) 但是,如果我想抓住与每个ID的每个号码的最大值相关联的值呢? 为什么我不能做:
我的桌子:
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,'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; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |