使用 group by 获取最新日期记录
Fetch latest date records with group by
我正在尝试获取具有唯一 report_ids (col_1_0_ ) 的最新记录的记录。
可能按 col_1_0_ 分组并使用此列 col_10_0_ 时间戳获取该组的最新记录。
我试图搜索此论坛以找到方法,但它对我不起作用。如果有人帮我找到类似的线程或帮助获得结果,那将很有帮助。
col_1_0_|ppi_event_id|col_2_0_ |col_10_0_ |
--------|------------|--------------------------|-----------------------|
149056| 3249|Draft |2020-08-25 13:01:49.016|
149056| 3249|Submitted | 2020-08-25 13:10:22.01|
149056| 3249|Submitted to administrator|2020-08-25 13:12:39.367|
149056| 3249|Validated |2020-08-25 13:13:28.879|
149060| 3249|Submitted to administrator|2020-08-25 13:32:41.924|
预期的结果是
col_1_0_|ppi_event_id|col_2_0_ |col_10_0_ |
--------|------------|--------------------------|-----------------------|
149056| 3249|Validated |2020-08-25 13:13:28.879|
149060| 3249|Submitted to administrator|2020-08-25 13:32:41.924|
任何人都可以在这方面提供帮助。
更新:我尝试了下面提到的解决方案,但有时它会显示第一条记录“草稿”而不是“已验证”
还有其他选择吗?
在 Postgres 中,我建议使用 distinct on
:这是对 SQL 标准的一个很好的扩展,它正是为您描述的目的而构建的。
select distinct on (col_1_0) t.*
from mytable t
order by col_1_0, col_10_0_ desc
传统的SQL格式是使用row_number()
SELECT * FROM (
SELECT A.*,
ROW_NUMBER() OVER( PARTITION BY col_1_0_ ORDER BY col_10_0_) AS RN
FROM TABLE1 A ) X WHERE RN = 1;
我正在尝试获取具有唯一 report_ids (col_1_0_ ) 的最新记录的记录。 可能按 col_1_0_ 分组并使用此列 col_10_0_ 时间戳获取该组的最新记录。
我试图搜索此论坛以找到方法,但它对我不起作用。如果有人帮我找到类似的线程或帮助获得结果,那将很有帮助。
col_1_0_|ppi_event_id|col_2_0_ |col_10_0_ |
--------|------------|--------------------------|-----------------------|
149056| 3249|Draft |2020-08-25 13:01:49.016|
149056| 3249|Submitted | 2020-08-25 13:10:22.01|
149056| 3249|Submitted to administrator|2020-08-25 13:12:39.367|
149056| 3249|Validated |2020-08-25 13:13:28.879|
149060| 3249|Submitted to administrator|2020-08-25 13:32:41.924|
预期的结果是
col_1_0_|ppi_event_id|col_2_0_ |col_10_0_ |
--------|------------|--------------------------|-----------------------|
149056| 3249|Validated |2020-08-25 13:13:28.879|
149060| 3249|Submitted to administrator|2020-08-25 13:32:41.924|
任何人都可以在这方面提供帮助。 更新:我尝试了下面提到的解决方案,但有时它会显示第一条记录“草稿”而不是“已验证” 还有其他选择吗?
在 Postgres 中,我建议使用 distinct on
:这是对 SQL 标准的一个很好的扩展,它正是为您描述的目的而构建的。
select distinct on (col_1_0) t.*
from mytable t
order by col_1_0, col_10_0_ desc
传统的SQL格式是使用row_number()
SELECT * FROM (
SELECT A.*,
ROW_NUMBER() OVER( PARTITION BY col_1_0_ ORDER BY col_10_0_) AS RN
FROM TABLE1 A ) X WHERE RN = 1;