在clickhouse表中,我有多行 _id
. 我想要的是每一行只有一行 _id
where列 _status_set_at
有它的最大值。这就是我目前的处境:
SELECT _id, max(_status_set_at), count(_id)
FROM pikta.candidates_states
GROUP BY _id
因为我不能用 max()
作用于 WHERE
如何解决这个问题? count(_id)
显示每行有多少行 _id
,如果查询正确,则应显示1。而且,就我而言,没有 ON
clickhouse数据库中的子句。
upd:有 ON
clickhouse中的子句
4条答案
按热度按时间gudnpqoy1#
您的查询将返回您所需要的内容—对于列status set at的最大值所在的每个\u id,只返回一行。您不需要更改原始查询中的任何内容。
count(\u id)显示原始表中每个\u id的行数,但不显示查询结果中的行数。查询结果中每个id只有一行,因为您是按id分组的。
此查询显示在查询结果中,每个id只有一行
如果您需要在max上应用一个条件(status\u set\u at),您可以使用having
7uzetpgm2#
解决方案-1:
解决方案2:
unhi4e5o3#
如果你想在where语句中添加max子句,也许这会起作用
2ul0zpep4#
替换
<other columns>
以及您需要选择的其他列的列表。内部选择返回成对的
_id
与max_status_set_at
为了这个_id
. external select返回表中带有附加列的行,但仅返回其中的列,其中_id
以及_status_set_at
是内部选择的结果,即最大_status_set_at
对于每个_id
.我发布了我的回复,因为之前的答案都不适合最初的问题,因为我明白这一点。有问题的请求应该能够返回其他列,而不仅仅是
_id
以及_status_set_at
,否则就没用了,您可以使用basic select,这已经提到过了。迈克的答案不能那样修改。teja的解决方案在clickhouse中不起作用。