从sql表中检索最高值
如何检索该数据:从sql表中检索最高值,sql,sql-server-2008,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
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
我想从每个名字中获得最高的利润值。
如果有多个相等的名称,则始终取最大值。因为这种类型的请求几乎总是跟在“现在我可以包含标题吗?”-以下是一个查询,它可以为每个名称获取最高利润,但可以包含所有其他列,而无需对这些其他列进行分组或应用任意聚合:
select name,max(profit) from table group by name
;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;
以后,请不要用毫无意义的
…
-空格实际上更有用。@Aaron,但它不会像表格一样显示。我只是想用一种很好的方式来帮助那些关注它的人。我更改了第一部分并删除了。。。。你喜欢这个结果吗?是的,在我看来这仍然像一个表格。是的,这是因为马丁·史密斯不知怎么更正了它。我想他只是添加了空格而不是点。事实上你是对的,我必须包含更多的字段。但是,hkutluay的解决方案不起作用,但你的解决方案起作用。但我不能改变这个问题,否则这将不公平,因此我将hkutluay的答案标记为解决方案。给你一个分数,谢谢你,带Over子句的CTE很有趣。