【发布时间】:2020-12-31 18:48:04
【问题描述】:
我想使用 PL/SQL (Oracle) 获得第二高的最大值。
我有一张如下所示的表格:
CLIENT | ORDER_DATE
1 | 14/09/2018
1 | 01/02/2019
2 | 13/12/2019
2 | 01/01/2020
2 | 15/12/2019
我想为每个客户获取一个包含最大值(ORDER_DATE)和第二大最大值(ORDER_DATE)的表:
CLIENT | MAX(ORDER_DATE) | 2nd highest max(ORDER_DATE)
1 | 01/02/2019 | 14/09/2018
2 | 01/01/2020 | 15/12/2019
我尝试过使用排名,但只有一行(一个随机客户端):
select *
from (select CLIENT,
max(ORDER_DATE),
row_number() over (order by max(ORDER_DATE) desc) as rk
from order_table
group by CLIENT) t
where rk = 2
【问题讨论】:
标签: sql oracle group-by window-functions