现有数据如下:
name type num
铁路局 E 900
铁路局 C 700
铁路局 F 500
铁路局 D 100
电信局 E 2000
电信局 T 600
电信局 H 400
房管局 F 1300
房管局 D 1100
房管局 G 600如何才能 让数据变成
电信局 E 2000
电信局 T 600
电信局 H 400
房管局 F 1300
房管局 D 1100
房管局 G 600
铁路局 E 900
铁路局 C 700
铁路局 F 500
铁路局 D 100也就是所有单位最大的数量排序》》
name type num
铁路局 E 900
铁路局 C 700
铁路局 F 500
铁路局 D 100
电信局 E 2000
电信局 T 600
电信局 H 400
房管局 F 1300
房管局 D 1100
房管局 G 600如何才能 让数据变成
电信局 E 2000
电信局 T 600
电信局 H 400
房管局 F 1300
房管局 D 1100
房管局 G 600
铁路局 E 900
铁路局 C 700
铁路局 F 500
铁路局 D 100也就是所有单位最大的数量排序》》
from tb
order by sum(num) over (partition by name) desc, num desc;
(select max(num) num,name from table group by name) b
where a.name = b.name
order by b.num,a.name,a.num
大概思想就是,先查出按name分组的最大num值,然后关联原表排序即可。
select name,type,num from
(select name,type, num, rownum()over(partition by name order by num desc) from table1) a left join
(select name,max(num) max_num from table1 group by name) b
on a.name = b.name
order by b.max_num desc,num desc
也感谢其他楼层的关注
select '铁路局' name , 900 num from dual union all
select '铁路局' name , 500 num from dual union all
select '铁路局' name , 100 num from dual union all
select '电信局' name , 2000 num from dual union all
select '电信局' name , 600 num from dual union all
select '电信局' name , 400 num from dual union all
select '房管局' name , 1300 num from dual union all
select '房管局' name , 1100 num from dual union all
select '房管局' name , 600 num from dual
)
select name,num,max(num) over(partition by name order by name,num desc)
from table1