按照汇总结果排序问题

建立测试环境如下
create table t1
(f1 varchar2(10),
f2 varchar2(10),
v1 integer,
v2 integer);
--插入测试数据
insert into t1
select '北京','1',1,1 from dual
union all 
select '北京','2',1,1 from dual
union all 
select '北京','1',1,1 from dual
union all 
select '北京','2',1,1 from dual
union all 
select '上海','1',1,1 from dual
union all 
select '上海','',1,1 from dual;
commit;

--取得汇总数据
select f1,f2,sum(v1),sum(v2) 
from t1 
group by rollup(f1,f2);
-----------------------------
1 北京 01 2 2
2 北京 02 2 2
3 北京 4 4
4 上海 01 1 1
5 上海 02 1 1
6 上海 2 2
7 6 6
------------------------------------
我现在想让结果按照“v1的汇总小计”排序,就是希望得到的结果为
4 上海 01 1 1
5 上海 02 1 1
6 上海 2 2  --按照这个结果值排序
1 北京 01 2 2
2 北京 02 2 2
3 北京 4 4  --按照这个结果值排序
-------------------------------------

既然需要按照汇总数据排序,那么基本上需要给中间结果一个伪列标识这个汇总数据
with summary as (select f1,f2,v1,v2,sum(v1) v3 over(partition by f1))
select f1,f2,sum(v1),sum(v2),max(v3) v3
from summary
order by v3;

排序算法中,时间复杂度是评估算法性能的重要指标。根据引用和引用的内容,下面是一些常见排序算法的时间复杂度汇总: 1. 冒泡排序:冒泡排序是一种简单但效率较低的排序算法。最坏情况下,冒泡排序的时间复杂度是O(n^2),其中n是待排序元素的数量。最好情况下,当数据已经有序时,冒泡排序的时间复杂度是O(n)。 2. 插入排序:插入排序算法根据待排序序列中的元素逐个插入已排序序列的合适位置。最坏情况下,插入排序的时间复杂度也是O(n^2)。最好情况下,当数据已经有序时,插入排序的时间复杂度是O(n)。 3. 选择排序:选择排序是一种简单的排序算法,每次从未排序的部分选择最小(或最大)的元素,然后放到已排序部分的末尾。选择排序的时间复杂度始终为O(n^2),无论数据是否有序。 4. 快速排序:快速排序是一种高效的排序算法,基于分治的思想。最坏情况下,快速排序的时间复杂度是O(n^2),但通常情况下,快速排序的平均时间复杂度是O(nlogn)。 5. 归并排序:归并排序是一种稳定且高效的排序算法,基于分治和合并的思想。归并排序的时间复杂度始终为O(nlogn),无论数据是否有序。 综上所述,不同的排序算法其时间复杂度不同。冒泡排序和插入排序的时间复杂度是O(n^2),选择排序的时间复杂度也是O(n^2),而快速排序和归并排序的时间复杂度是O(nlogn)。请注意,这些时间复杂度都是在最坏情况下估计的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值