【问题标题】:DB2 Toad SQL - Group by Certain Columns using Max CommandDB2 Toad SQL - 使用 Max 命令按某些列分组
【发布时间】:2020-09-24 19:07:37
【问题描述】:

我在使用以下查询时遇到了一些问题。我确实知道我需要按 ID 和类别分组,但我只想按 ID 分组,同时保持基于 Rank 的其余列是最大值。有没有办法只按某些列分组?

select ID, Category, max(rank)
from schema.table1
group by ID

输入:

ID   Category   Rank
111  3          4
111  1          5
123  5          3
124  7          2

电流输出

ID   Category   Rank
111  3          4
111  9          1
123  5          3
124  7          2

期望的输出

ID   Category   Rank
111  1          5
123  5          3
124  7          2

【问题讨论】:

  • 期望输出的第一行不应该是 (111, 1, 5) 吗?
  • 你完全正确!我将编辑帖子。谢谢!

标签: sql group-by db2 toad


【解决方案1】:

你可以使用:

select *
from table1
where (id, rank) in (select id, max(rank) from table1 group by id)

结果:

ID   CATEGORY  RANK 
---- --------- ---- 
111  1         5    
123  5         3    
124  7         2    

或者您可以使用ROW_NUMBER() 窗口函数。例如:

select * 
from (
  select *,
    row_number() over(partition by id order by rank desc) as rn
  from table1
) x
where rn = 1

请参阅db<>fiddle 的运行示例。

【讨论】:

    【解决方案2】:

    您可以尝试使用-row_number()

    select * from
    (
    select ID, Category,rank, row_number() over(partition by id order by rank desc) as rn
    from schema.table1
    )A where rn=1
    

    【讨论】:

      猜你喜欢
      • 2018-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 2018-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多