在Clickhouse表格中,我有一个_id的多行。我想要的是每个_id仅获得一行,其中_status_set_at列具有最大值。
那就是我目前所在的位置:

SELECT _id, max(_status_set_at), count(_id)
FROM pikta.candidates_states
GROUP BY _id

sql - 仅选择具有最大日期的行-LMLPHP

由于无法在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/

10-13 05:02