根据现有的查询,可以进行日期运算。考虑:
SELECT t.* FROM (
SELECT MAX(tgl_harga) AS maxdate
FROM tbl_dummy
GROUP BY
DATE(tgl_harga),
FLOOR(HOUR(tgl_harga) / 2)
) AS g
INNER JOIN tbl_dummy t ON g.maxdate = t.tgl_harga
ORDER BY t.tgl_harga DESC
这将为每个固定的2小时窗口提供一条记录,这是该窗口中的最新记录(因此:0小时到2小时之间的一条记录,2小时到4小时之间的一条记录,依此类推)。注意,这并不一定意味着resultset中的记录之间有2小时的间隔。
在你的
demo on DB Fiddle
,查询将生成:
id_harga | tgl_harga | harga | id_region
:--------- | :------------------ | ------: | :--------
HF01245523 | 2019-11-17 06:01:05 | 1.10513 | 599
HF01245515 | 2019-11-17 05:59:07 | 1.10513 | 599
HF01245035 | 2019-11-17 03:59:06 | 1.10513 | 599
HF01244554 | 2019-11-17 01:57:06 | 1.10513 | 599
HF01244082 | 2019-11-16 23:59:06 | 1.10513 | 599
HF01243602 | 2019-11-16 21:59:06 | 1.10513 | 599
HF01243114 | 2019-11-16 19:57:07 | 1.10513 | 599
HF01242642 | 2019-11-16 17:59:06 | 1.10513 | 599
HF01242162 | 2019-11-16 15:59:07 | 1.10513 | 599
HF01241682 | 2019-11-16 13:59:06 | 1.10513 | 599