我在数据库中有这样的表
dbFiddle
我想按日期/ 2小时显示数据顺序
例如
HF01245523 | 2019-11-17 06:01:05 | 1.10513 | 599 HF01245043 | 2019-11-17 04:01:06 | 1.10513 | 599 HF01244562 | 2019-11-17 02:00:06 | 1.10513 | 599 那可能吗?
我试过这个查询:
SELECT * FROM ( SELECT MAX(tgl_harga) AS maxdate FROM tbl_dummy GROUP BY YEAR(tgl_harga), MONTH(tgl_harga), WEEK(tgl_harga), DAY(tgl_harga) ) AS g INNER JOIN tbl_dummy ON g.maxdate = tbl_dummy.tgl_harga 但是此查询仅显示/ day,我不知道显示记录/ 2小时。
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
在现有查询的基础上,您可以进行日期算术。考虑:
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小时窗口为您提供一条记录,这是该窗口中的最新记录(因此:0h和2h之间的一条记录,2h和4h之间的一条记录,依此类推)。请注意,这不一定意味着结果集中的记录之间会有2小时的间隔。
在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