首页 > 解决方案 > SQL Select where LINE = MAXIMUM Value per Primary Key Oracle SQL Developer

问题描述

在此示例中,如何仅选择每个用户的最高行:

在此处输入图像描述

输出将是 TED、PEARS 和 BILL、ORANGE

如果向比尔添加新行,将来(第 5 行)我希望使用相同的查询来拉第 5 行通信。

标签: sqloracleaggregate-functionsgreatest-n-per-group

解决方案


如果您只想要用户和通信,请使用keep

select usr, 
    max(communication) keep(dense_rank first order by line desc) as communication
from mytable
group by usr

如果你想要整行,窗口函数更合适:

select *
from (
    select t.*, row_number() over(partition by usr order by line desc) rn
    from mytable t
) t
where rn = 1

旁注:user是一个保留字,因此对于列名来说是一个糟糕的选择。我usr在查询中使用了。


推荐阅读