如何获得具有最大值的列的行? [复制]
Posted
技术标签:
【中文标题】如何获得具有最大值的列的行? [复制]【英文标题】:how to get a Row with Max value of a column? [duplicate] 【发布时间】:2020-02-22 11:49:53 【问题描述】:我的桌子是这样的
P_ID | NAME | SRNO | Rate
1 | PR1 | 1 | 50
1 | PR1 | 2 | 60
1 | PR1 | 3 | 80 ----
2 | PR2 | 1 | 10
2 | PR2 | 2 | 20 ----
3 | PR3 | 1 | 70 ----
4 | PR4 | 1 | 25
4 | PR4 | 2 | 35 ----
我想详细说明每种产品的 SrNo 为最大值。 像这样:
P_ID | NAME | SRNO | Rate
1 | PR1 | 3 | 80
2 | PR2 | 2 | 20
3 | PR3 | 1 | 70
4 | PR4 | 2 | 35
我该怎么做???
【问题讨论】:
【参考方案1】:您可以使用相关子查询:
select t.*
from mytable t
where t.srno = (select max(srno) from mytable t1 where t1.p_id = t.p_id)
在(p_id, srno)
上有一个索引,这应该是一个有效的解决方案。
另一个常见的解决方案是使用row_number()
:
select pid, name, srno, rate
from (
select t.*, row_number() over(partition by p_id order by srno desc) rn
from mytable t
) t
where rn = 1
【讨论】:
太棒了。第一个工作。谢谢。我自己尝试了很多。以上是关于如何获得具有最大值的列的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章