oracle 查询每组的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle 查询每组的最大值相关的知识,希望对你有一定的参考价值。

表中字段:‘更改时间’、‘名称’、‘品牌’等等字段 (根据‘品牌分组’,更改时间多次)

查询3个字段:
1.按时间差最大值进行排名(显示12345.....)
2.名称
3.时间差最大值(修改时间排序后,相邻时间间隔多少天。)
========================
lead() over()函数对日期进行处理时,如果更改的日期记录只有一条怎么做?不作任何处理,得到的结果是:(另外还有一个条件是一个时间范围内的多个时间计算差值,如果只有一条时间更改记录的话,用最大时间减去这条记录就可。请问sql语句怎么实现)

参考技术A 不知道你要的是什么,建议列出现在的表数据和需要查询出的数据。追问

计算相邻时间我会了。

现在问题:分组查询,取每组最大值,排序

追答

可以用max(字段) over(),也可以用last_value(字段) over()或first_value(字段) over(),
如果只要返回单值,可以用max(字段) keep(dense_rank firse/last order by)

本回答被提问者采纳

Oracle分组查询取每组排序后的前N条记录

项目中用到Oracle分组查询取每组排序后的前N条记录,group by 只能返回每个组的单条统计。所以用OVER(PARTITION BY)函数,具体详见baidu.com

建个测试表test_abc,如图:

 要求查询出按B字段进行分组,每组取C值最大的前3位。
查询sql为 :
select * from (
SELECT b,c,row_number() OVER(PARTITION BY b ORDER BY c desc) e FROM test_abc) t where e <= 3

查询结果截图:

 

记录完毕!

————————————————
版权声明:本文为CSDN博主「wangchsh2008」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/wangchsh2008/article/details/53419991

以上是关于oracle 查询每组的最大值的主要内容,如果未能解决你的问题,请参考以下文章

MySQL按顺序查找每组最近/最大的记录

获取每组的最大值

Oracle分组查询取每组排序后的前N条记录

PowerPivot:如何识别计算列中每组的最大值

具有多列的熊猫每组的最大值/为啥它仅在展平时才有效?

根据最大日期获取每组的最新行