如何选择SQL中具有唯一值和最高金额的前“n”行

如何选择SQL中具有唯一值和最高金额的前“n”行,sql,sql-server,greatest-n-per-group,Sql,Sql Server,Greatest N Per Group,我在SSMS v17.6中工作,我需要收集每个唯一ID的前3行以及具有最高值的水果,如下所示 ID FRUIT OTHER_ID VALUE GG-1 APPLE 25432 100 GG-1 APPLE 37586 200 GG-1 APPLE 33614 400 GG-1 APPLE 70776 500 GG-1 APPLE 52102 600 GG-2 BANANA 33745 150 GG-2

我在SSMS v17.6中工作,我需要收集每个唯一ID的前3行以及具有最高值的水果,如下所示

ID  FRUIT   OTHER_ID    VALUE 
GG-1    APPLE   25432   100
GG-1    APPLE   37586   200
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  33745   150
GG-2    BANANA  44823   250
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650
示例数据

ID  FRUIT   OTHER_ID    VALUE 
GG-1    APPLE   25432   100
GG-1    APPLE   37586   200
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  33745   150
GG-2    BANANA  44823   250
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650
结果前三名

ID  FRUIT   OTHER_ID    VALUE 
GG-1    APPLE   25432   100
GG-1    APPLE   37586   200
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  33745   150
GG-2    BANANA  44823   250
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650
ID  FRUIT   OTHER_ID    VALUE       
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650
数据不限于本例中显示的两个水果和ID,但每个水果都有唯一的ID。我认为可以仅根据ID本身来完成。在我看来,选择TOPn不起作用,也不会按。。。极限n

ID  FRUIT   OTHER_ID    VALUE 
GG-1    APPLE   25432   100
GG-1    APPLE   37586   200
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  33745   150
GG-2    BANANA  44823   250
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650
也许某种秩函数可以做到这一点,但我不确定这里需要什么术语。

使用行数:

ID  FRUIT   OTHER_ID    VALUE 
GG-1    APPLE   25432   100
GG-1    APPLE   37586   200
GG-1    APPLE   33614   400
GG-1    APPLE   70776   500
GG-1    APPLE   52102   600
GG-2    BANANA  33745   150
GG-2    BANANA  44823   250
GG-2    BANANA  88313   350
GG-2    BANANA  25181   450
GG-2    BANANA  65301   650

ORDERBY子句需要提及一列。我想你错过了添加它。谢谢你,这实际上指引了我正确的方向。问题解决了@乔治梅努蒂斯。我知道它的性能更差。真的吗?有这个的链接吗?