SQL - 基于单列删除重复行

问题描述 投票:0回答:1

我有一个包含重复 ID、不同分数和不同日期的数据集,就像这样

我希望根据一天的最大值每个 ID 一行。这就是我想要的输出

我当前的查询没有进行重复数据删除,因为每个 ID 有多个分数。我正在尝试在这样的 where 子句中使用子查询

select distinct

ID,
score, 
day

from table A
where day in (select max(day)
              from table A
              group by ID)

子查询显然每行只返回一个ID,但是当我添加分数时,我仍然得到重复项。

任何想法都将不胜感激!

sql duplicates subquery
1个回答
0
投票

以下使用大多数 DBMS 支持的通用表表达式来获取每个 ID 的最大天数。然后在 ID 和 Day 加入它。

with maxCTE as (
 select id, max(day) as max_day
   from table1
  group by id  
  )
select t.*
  from table1 t 
  join maxCTE m 
    on t.id = m.id 
   and t.day = m.max_day 
© www.soinside.com 2019 - 2024. All rights reserved.