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 变量

MySQL中WHERE后跟着N多个OR条件会怎样。。。

thinkphp 里sql 语句如何解读????

SQL语句 select from where中可否嵌入if条件语句?

MySQL关于日期的查询sql

SQL - 在另一个 SELECT 的 WHERE 子句中使用 SELECT