赞
踩
select * from test_2024_04_15_001 order by 销量 desc,渠道
select 渠道,销量
from
(
select a.渠道, a.销量
from test_2024_04_15_001 a
order by a.销量 desc,a.渠道
)
where rownum =1
select 渠道,销量
from
(
select a.渠道, a.销量
from test_2024_04_15_001 a
order by a.销量 desc,a.渠道
)
where rownum =2
发现并没有数据返回
因为rownum并不是当作实体数据存放在每一张表中,而是在每一次select查询的时候,根据基表的默认insert顺序由oracle动态分配的,有1才有2,如果rownum没有1,那么2也就没有了意义,所以这个查询就不会有任何结果出来。
此时可以先取出前N大的值,到序排序,再获取第一行数据,及第N大的值
select 渠道,销量
from
(
select 渠道,销量
from
(
select a.渠道, a.销量
from test_2024_04_15_001 a
order by a.销量 desc,a.渠道
)
where rownum <=2
order by 销量,渠道
)
where rownum =1
select 渠道,销量
from
(
select 渠道,销量
from
(
select a.渠道, a.销量
from test_2024_04_15_001 a
order by a.销量 desc,a.渠道
)
where rownum <=3
order by 销量,渠道
)
where rownum =1
发现取出的记录和第二大的值记录一样
通过row_number实现,是正常显示的
select t1.渠道,t1.销量
from
(
select a.渠道, a.销量,row_number() over(order by a.销量 desc,a.渠道) rum
from test_2024_04_15_001 a
) t1
where rum =3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。