按组中的最大值排序

Val*_*lga 6 sql sql-server group-by sql-order-by sql-server-2008

我想将结果分组为一列(NAME),然后按第二列(注释)为每个组排序,最后按照最高的顺序对组进行排序.

所以,如果我的实体像这样扰乱:

NAME         NOTE
Andrew       19
Thomas       18
Andrew       18
Andrew       17
Frank        16 
Frank        15
Thomas       14 
Thomas       12
Frank        5
Run Code Online (Sandbox Code Playgroud)

我希望他们这样订购:

NAME         NOTE
Andrew       19
Andrew       18
Andrew       17
Thomas       18
Thomas       14 
Thomas       12
Frank        16 
Frank        15
Frank        5
Run Code Online (Sandbox Code Playgroud)

按姓名分组,安德鲁首先出现因为他的最高音符是19,然后是托马斯(18)和弗兰克(16).

问候,

瓦尔

Gor*_*off 4

这是使用窗口函数来完成此操作的一种方法:

select name, note
from (select t.*, max(note) over (partition by name) as maxnote
      from t
     ) t
order by maxnote desc, name
Run Code Online (Sandbox Code Playgroud)

除了按maxnote排序外,还按名称排序。如果存在联系,那么它将把给定名称的所有记录保存在一起。