从sql表中检索最高值

时间:2012-07-21 21:29:23

标签: sql sql-server-2008

如何检索该数据:

Name     Title      Profit
Peter    CEO        2
Robert   A.D        3
Michael  Vice       5
Peter    CEO        4
Robert   Admin      5
Robert   CEO        13
Adrin    Promotion  8
Michael  Vice       21
Peter    CEO        3
Robert   Admin      15

得到这个:

Peter........4
Robert.......15
Michael......21
Adrin........8

我想从每个名字中获得最高的利润值。 如果有多个相同的名称,则始终取最高值。

2 个答案:

答案 0 :(得分:5)

select name,max(profit) from table group by name

答案 1 :(得分:2)

由于这种类型的请求几乎总是跟着“现在可以包含标题吗?” - 这是一个查询,每个名称获得最高利润,但可以包括所有其他列,而无需将任意聚合分组或应用于其他列:

;WITH x AS 
(
  SELECT Name, Title, Profit, rn = ROW_NUMBER()
    OVER (PARTITION BY Name ORDER BY Profit DESC)
  FROM dbo.table
)
SELECT Name, Title, Profit
FROM x
WHERE rn = 1;