我有以下三个字段:
f1 f2 f3
b x 100.22
c y 150.15
a x 240.35
a y 130.25
b y 789.34
c x 199.89
我想像这样对它们进行排序:
f1 f2 f3
b y 789.34
b x 100.22
a x 240.35
a y 130.25
c x 199.89
c y 150.15
主要排序应基于f3进行,因此在f3中具有较大总和的f1值组应较高(降序)。f3的值也应按其自己的组降序排列。
您可以使用子查询来计算总和,然后将其用于order by
:
select f1, f2, f3
from (select t.*, sum(f3) over (partition by f1) as sumf1
from table t
) t
order by sumf1 desc, f1, f3 desc;
实际上,您不需要子查询(尽管我更喜欢将它们与窗口函数一起使用):
select f1, f2, f3
from table t
order by sum(f3) over (partition by f1) desc, f1, f3 desc;
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句