嵌套SQL排序

阿敏·伊扎帕纳(Amin Izadpanah)

我有以下三个字段:

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的值也应按其自己的组降序排列。

戈登·利诺夫(Gordon Linoff)

您可以使用子查询来计算总和,然后将其用于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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章