如何获得具有最大值的列的行? [复制]

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

【讨论】:

太棒了。第一个工作。谢谢。我自己尝试了很多。

以上是关于如何获得具有最大值的列的行? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

SQL - 如何选择具有最大值列的行

如何从Oracle中的另一个子查询中选择具有最大列的行

如何获取数据集中具有空值的列的总数? [复制]

s-s-rS 2005 查找具有最大值的列的名称

Python:如何获取具有它们所属组的最大值的行? [复制]

Pandas - 具有重复值的列的外部连接