ClickHouse实现类似Hive的row_number() over (partition by)的方法
利用rowNumberInAllBlocks函数:
hive写法:
select orderid
from (select orderid,
row_number() over(partition by orderid order by datachange_lasttime desc) as row_num
from table
where d = '${CurrentDate}'
) a
where row_num = 1;
ClickHouse写法,使用rowNumberInAllBlocks函数。(注:使用其他几种CK的实现方式,当按照指定字段分组,查询所有表字段的最新一条时,是实现不了的)
select orderid, status
from (select orderid, status, rowNumberInAllBlocks() as rank
from (select orderid, status, datachange_lasttime
from table
order by orderid, datachange_lasttime desc
) a
) b LIMIT 1 BY orderid
简写方式,方法同上(LIMIT 1 BY 方式):
select orderid,
status,
datachange_lasttime
from table
order by orderid, datachange_lasttime desc
LIMIT 1 BY orderid
posted on 2022-10-24 11:24 RICH-ATONE 阅读(1052) 评论(0) 收藏 举报
浙公网安备 33010602011771号