在 clickhouse 表中,一个 _id
有多个行。我想要的是为每个 _id
只获取一行,其中 _status_set_at
列有其最大值。
这就是我目前的处境:
SELECT _id, max(_status_set_at), count(_id)
FROM pikta.candidates_states
GROUP BY _id
因为我不能在 WHERE
子句中使用 max()
函数,如何解决这个问题?
count(_id)
显示每个 _id
有多少行,如果查询正确,它应该显示 1。
另外,据我所知,Clickhouse 数据库中没有 ON
子句。
更新: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/