按时间排序后取第2大的时间,oracle怎么办

发布网友 发布时间:2022-04-22 20:49

我来回答

5个回答

热心网友 时间:2023-07-10 17:16

可通过row_number来获取。

如emp表中有如下数据:

现要查询此表中hiredate第二大的时间,可用如下语句:

select t.* from
(select emp.*,row_number() over (order by hiredate) rn from emp) t
where t.rn=2;

查询结果:

热心网友 时间:2023-07-10 17:17

select rownum,表名.* from (select distinct 时间 from 表名 order by 时间 desc) as time1,表名
where rownum=2 and 表名.时间=time1.时间

热心网友 时间:2023-07-10 17:17

最大的时间是不是最早的时间还是最近的时间?
select top 5 * from 表 order by 时间 DESC 干脆取5条记录出来看看就可以了吧.

热心网友 时间:2023-07-10 17:18

select * from (
select rownum rm, * from table order by date desc)
where rm = 2

热心网友 时间:2023-07-10 17:18

最大的那个时间有可能有2行,也可能有n行,所以用row_number是无法得出第二大时间,需要用到dense_rank,可参考如下代码
select * from (
select row_number() over (order by trunc(t.LAST_ACTIVE_TIME,'mi')) row_n
,dense_rank() over (order by trunc(t.LAST_ACTIVE_TIME,'mi')) dense_n
,trunc(t.LAST_ACTIVE_TIME,'mi') object_n
,t.*
from v$sql t
order by trunc(t.LAST_ACTIVE_TIME,'mi')
)
where dense_n=2 and rownum=1

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com