发布网友 发布时间:2022-04-22 20:49
共5个回答
热心网友 时间:2023-07-10 17:16
可通过row_number来获取。
如emp表中有如下数据:
现要查询此表中hiredate第二大的时间,可用如下语句:
查询结果:
热心网友 时间: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