有人可以帮我按预期排序记录(Postgres数据库)吗?
以下是我的一个表上的查询结果,我按日期排序了整个日期的一部分(ORDER BY extract(DAY from cast(date as DATE))
)
注意::所有日期均为YYYY-MM-DD格式
2016-03-01
2016-09-01
2016-08-01
2016-12-01
2016-01-01
2016-07-01
2016-11-01
2016-02-01
2016-06-01
2016-10-01
2016-04-01
2016-05-01
2016-07-22
2016-08-22
2016-10-22
2016-09-22
2016-11-22
2016-12-22
这很好,因为它根据日期部分对记录进行排序。但是,我想要的是,结果应该是所有记录都应该根据日期部分进行排序,所以从日期1开始的所有记录都来自日期22之前的所有记录,而且它应该对这两个部分进行排序,即日期1的记录和日期22个月也是部分(如果您查看上面的结果集,您会注意到它按日期部分排序,但不是按月部分排序)。基本上我想要的结果应如下所示
2016-01-01
2016-02-01
2016-03-01
2016-04-01
2016-05-01
2016-06-01
2016-07-01
2016-08-01
2016-09-01
2016-10-01
2016-11-01
2016-12-01
2016-07-22
2016-08-22
2016-09-22
2016-10-22
2016-11-22
2016-12-22
答案 0 :(得分:1)
使用两步排序,只需在每个日期块中添加另一种排序:
ORDER BY extract(DAY from cast(date as DATE)), -- first sort by day
date -- then sort by date
此排序将第1天记录放在第一位,其他记录(即第22天)记录最后。在每个1/22日期的区块内,记录按日期递增排序。