我想将结果按一个列(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/

10-13 00:50