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

标签 sql database clickhouse

在 clickhouse 表中,一个 _id 有多个行。我想要的是为每个 _id 只获取一行,其中 _status_set_at 列有其最大值。 这就是我目前的处境:

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

output

因为我不能在 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/

相关文章:

mysql - 'SELECT' 语句中的 'IF' - 根据列值选择输出值

sql - 在线 SQL 查询语法检查器

mongodb - 从clickhouse中的外部字典中检索所有记录

docker - 无法在 Windows 中监听 Clickhouse (Docker) 的 8123 端口

SQL从两个时间段中选择最大值

ios - 确定核心数据模型中何时有新版本

java - 使用 Google App Engine 端点连接到 Cloud SQL

database - PostgreSQL应用程序中的不同时区

clickhouse - 无法启动 ClickHouse。退出代码 203

sql - VB 调用写入文件的 SQL Server 存储过程,故障超过 104 KB