clickhouse 复杂SQL总结

数据分组 ,取出每组中最新的一条数据

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 
 select  (argMax( tuple(t.y,t.m,t.d) ,tuple(t.m,t.d))) as YMD from 
 (
select 2021 as y ,   12 as m,2 as d 
union all 
select  2021 as y , 11  as m ,20 as d 
union all 
select  2022 as y,  11  as m ,20 as d 
union all 
select  2022 as y,  11  as m ,30 as d 
) t 
group by t.y 

这里用 union all 模拟表的数据, 首先,我们先根据年份 y分组, 然后取出每年最后记录的最新的数据,就可以用 argMax 函数, 我们这里用 tuple 元祖来比较,这样就先比较月份,再比较日期,获得我们想要的数据