在Clickhouse表格中,我有一个_id
的多行。我想要的是每个_id
仅获得一行,其中_status_set_at
列具有最大值。
那就是我目前所在的位置:
SELECT _id, max(_status_set_at), count(_id)
FROM pikta.candidates_states
GROUP BY _id
由于无法在
max()
子句中使用WHERE
函数,如何解决此问题?count(_id)
显示每个_id
有多少行,如果查询正确,则应显示1。另外,就我而言,Clickhouse数据库中没有
ON
子句。UPD:Clickhouse中有
ON
子句 最佳答案
您的查询返回您需要的内容-每个_id仅一行,其中_status_set_at列具有最大值。
您无需更改原始查询中的任何内容。
count(_id)显示原始表中每个_id的行数,而不是查询结果中的行数。
由于您按_id分组,因此每个_id的查询结果只有一行。
该查询表明,在您的查询结果中,每个_id仅一行
SELECT _id, max_status_set_at, count(_id) FROM (
SELECT _id, max(_status_set_at) max_status_set_at
FROM pikta.candidates_states
GROUP BY _id) t
GROUP BY _id
如果需要在max(_status_set_at)上应用条件,则可以使用HAVING
关于sql - 仅选择具有最大日期的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51878741/