我想将结果按一个列(NAME)分组,然后对每个组按第二列(NOTE)排序,最后按它们具有的最高NOTE来对这些组进行排序。
因此,如果我的实体像这样困惑了:
NAME NOTE
Andrew 19
Thomas 18
Andrew 18
Andrew 17
Frank 16
Frank 15
Thomas 14
Thomas 12
Frank 5
我希望这样订购他们:
NAME NOTE
Andrew 19
Andrew 18
Andrew 17
Thomas 18
Thomas 14
Thomas 12
Frank 16
Frank 15
Frank 5
按名字分组,安德鲁首先出现是因为他的最高音调是19,然后是托马斯(18)和弗兰克(16)。
问候,
值
最佳答案
这是使用窗口函数执行此操作的一种方法:
select name, note
from (select t.*, max(note) over (partition by name) as maxnote
from t
) t
order by maxnote desc, name
除了按maxnote排序外,它还按名称排序。如果存在联系,则它将给定名称的所有记录保持在一起。
关于sql - 按组中的最大值排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16465881/