SQL选择其中行=每个主键的最大值Oracle SQL Developer
如何在此示例中仅选择每个用户的最高行: 产量将是特德、梨和比尔、橘子SQL选择其中行=每个主键的最大值Oracle SQL Developer,sql,oracle,aggregate-functions,greatest-n-per-group,Sql,Oracle,Aggregate Functions,Greatest N Per Group,如何在此示例中仅选择每个用户的最高行: 产量将是特德、梨和比尔、橘子 如果账单中添加了新行,将来,(第5行)我希望使用相同的查询来拉取第5行通信。如果只需要用户和通信,请使用保留: select usr, max(communication) keep(dense_rank first order by line desc) as communication from mytable group by usr 如果需要整行,则窗口函数更合适: select * from (
如果账单中添加了新行,将来,(第5行)我希望使用相同的查询来拉取第5行通信。如果只需要用户和通信,请使用
保留
:
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
。如果您只需要用户和通信,请使用保留
:
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
。您的表中有一列,因此您可以使用max分析函数,或者不存在,如下所示:
使用sum
分析函数:
Select * from
(Select t.*, max(line) over (partition by user) as mxline
From your_table t)
Where line = mxline
使用不存在
Select * from your_table t
Where not exists
(Select 1 from your_table tt
Where t.user = tt.user
And tt.line > t.line)
表中有一列,因此可以使用max分析函数,也可以不使用,如下所示: 使用
sum
分析函数:
Select * from
(Select t.*, max(line) over (partition by user) as mxline
From your_table t)
Where line = mxline
使用不存在
Select * from your_table t
Where not exists
(Select 1 from your_table tt
Where t.user = tt.user
And tt.line > t.line)
欢迎@TEE2SKI。如果我的回答回答了你的问题,那么点击复选标记。。。谢谢。欢迎@TEE2SKI。如果我的回答回答了你的问题,那么点击复选标记。。。谢谢