SQL Select where LINE = MAXIMUM Value per Primary Key Oracle SQL Developer
Posted
技术标签:
【中文标题】SQL Select where LINE = MAXIMUM Value per Primary Key Oracle SQL Developer【英文标题】: 【发布时间】:2021-03-02 05:48:43 【问题描述】:在这个例子中我如何只选择每个用户的最高行:
输出将是 TED、PEARS 和 BILL、ORANGE
如果向 Bill 添加了一条新线路,将来(第 5 行)我希望使用相同的查询来拉取第 5 行通信。
【问题讨论】:
【参考方案1】:你的表中有列行,所以你可以使用max解析函数或者不存在如下:
使用sum
解析函数:
Select * from
(Select t.*, max(line) over (partition by user) as mxline
From your_table t)
Where line = mxline
使用not exists
Select * from your_table t
Where not exists
(Select 1 from your_table tt
Where t.user = tt.user
And tt.line > t.line)
【讨论】:
【参考方案2】:如果您只想要用户和通信,请使用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
。
【讨论】:
欢迎@TEE2SKI。如果我的回答回答了您的问题,请点击复选标志accept it...谢谢。以上是关于SQL Select where LINE = MAXIMUM Value per Primary Key Oracle SQL Developer的主要内容,如果未能解决你的问题,请参考以下文章
如何在 select 的 where 子句中替换 oracle pl/sql 变量