在 PostgreSQL 上获取今天和昨天的最新数据?

Get Latest Data from Today and Yesterday on PostgreSQL?

我有一些时间序列数据,我想获取有关的某些信息。

如何检索两条记录,今天和昨天的最新记录?

这是我正在处理的数据的一些样本数据。

latest  price       amount  avg_rating  time
4.9     13323.92256 153     5.466540778 2022-03-05 23:55:56.852459-05 <--- Today's latest record
4.99    13318.92256 154     5.490350302 2022-03-05 23:17:55.814162-05   
5.7     13009.62049 151     6.5314      2022-03-05 02:39:39.826069-05   
5.99    12997.92049 154     6.571948718 2022-03-05 01:13:48.528526-05   
5.99    12911.34049 150     6.867946429 2022-03-04 18:14:01.177497-05 <--- Yesterday's latest record
5.99    12911.34049 151     6.845169492 2022-03-04 17:34:05.538811-05   
5.99    12911.34049 153     6.845169492 2022-03-04 17:08:19.254631-05   

下面是我想要的

latest  price       amount  avg_rating  time
4.9     13323.92256 153     5.466540778 2022-03-05 23:55:56.852459-05
5.99    12911.34049 150     6.867946429 2022-03-04 18:14:01.177497-05

仅从时间列中提取日期并将其用于 PARTITION BY 子句。由于需要今天和昨天的数据,因此今天使用 current_date,昨天使用 current_date - 1 来检索两个日期数据。此查询适用于此禁用 WHERE 子句的所有日期。使用子查询根据要求选择日期明智的最新数据。

SELECT t.latest
     , t.price
     , t.amount
     , t.avg_rating
     , t.time
FROM (SELECT *
           , ROW_NUMBER() OVER (PARTITION BY time :: VARCHAR(10) :: DATE ORDER BY time DESC) row_num
      FROM table_name
      WHERE time :: VARCHAR(10) :: DATE BETWEEN current_date - 1 AND current_date) t
WHERE t.row_num = 1