我有一个包含重复 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,但是当我添加分数时,我仍然得到重复项。
任何想法都将不胜感激!
以下使用大多数 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