【问题标题】:Multiple rows with Maximum Values in sqlsql中具有最大值的多行
【发布时间】:2021-02-18 00:47:42
【问题描述】:

谁能帮我解决以下问题?

我正在尝试按 (PO) 和 (line) 分组以获得 (Quantity) 的最大值,而不管 (type) 中的值如何。

我尝试按 PO 分组并同时进行分组,但它不起作用并显示了这个

错误:“未按功能分组”。

数据如下:

po line type quantity
100 1 4 23
100 1 5 20
100 2 1 40
200 1 1 10
200 2 2 15

我想得到以下结果:

po line type quantity
100 1 4 23
100 2 1 40
200 1 1 10
200 2 2 15

代码:

select 
orno "PO NUMBER",
pono "Line",  
oltp "Line Type",
max(qoor) "Quantity"
from 
    table 
group by orno;

【问题讨论】:

  • 使用纯文本或表格markdown显示表格,也请提供一些DDL。

标签: sql select max oracle-sqldeveloper


【解决方案1】:

一种方法是相关子查询:

select t.*
from t
where t.quantity = (select max(t2.quantity)
                    from t t2
                    where t2.po = t.po and t2.line = t.line
                   );

在 Oracle 中,另一个选项是聚合:

select po, line,
       max(type) keep (dense_rank first order by quantity desc) as type,
       max(quantity) as quantity
from t
group by po, line;

keep 语法是 Oracle 实现“第一”聚合函数的奇特方式。

【讨论】:

  • 非常感谢!!这与第二个选项完美配合。请向我澄清您的代码,因为它具有高级语句
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-24
  • 2018-02-09
  • 1970-01-01
  • 2021-01-03
  • 2021-08-16
  • 1970-01-01
相关资源
最近更新 更多