gpt4 book ai didi

sql - 如何在 group by 子句中按日期获取最新项目

转载 作者:行者123 更新时间:2023-11-29 14:14:13 24 4
gpt4 key购买 nike

我正在运行以下查询以获取基于日期的最新记录

select myItem,to_timestamp(my_date/1000) 
from history_table
where to_timestamp(sign_date/1000)::date >= '2019-01-01'
and myItem = 'SomeItem'
group by myItem,to_timestamp(my_date/1000)
order by to_timestamp(my_date/1000)
DESC LIMIT 1;

返回的数据如下:

         myItem          |      to_timestamp
----------------------+------------------------
SomeItem | 2019-02-20 15:37:57+00
(1 row)

但是如果我删除 LIMIT 1,那么我会得到这个:

         myItem          |      to_timestamp
----------------------+------------------------
SomeItem | 2019-02-20 15:37:57+00
SomeItem | 2019-02-15 13:47:43+00
SomeItem | 2019-02-08 19:02:57+00
SomeItem | 2019-02-08 12:42:34+00
SomeItem | 2019-02-07 21:07:16+00
SomeItem | 2019-02-07 21:04:26+00
SomeItem | 2019-02-04 22:01:42+00
(7 rows)

问题

我想删除 myItem = 'SomeItem' 子句,以便我可以根据 my_date 获取每个项目的最新记录。我该怎么做?

最佳答案

在 PostgreSQL 中,您为此使用 DISTINCT ON:

select distinct on (myItem) myItem, to_timestamp(my_date/1000)
from history_table
where to_timestamp(sign_date/1000)::date >= date '2019-01-01'
order by myItem, to_timestamp(my_date/1000) desc;

您可以向 select 子句添加更多列,因为您正在检索每个 myitem 的最新行。

编辑:如果只是显示每个我的项目的最大日期,我会选择 Cristian 的答案。当您要显示的表格中有更多列时,我的解决方案是合适的。

关于sql - 如何在 group by 子句中按日期获取最新项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55341416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com