我有一些时间序列数据,我想得到一些有关的信息。
我将如何检索两个记录,在哪里我得到今天和昨天的最新记录?
这是一些我正在处理的数据的样本数据。
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
发布于 2022-03-05 22:22:13
只从time列提取日期,并在PARTITION子句中使用它。由于今天和昨天的数据是必需的,那么今天使用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
https://stackoverflow.com/questions/71368045
复制