[英]Order a postgreSQL query on a rolling period (2)
这是我的查询:
SELECT
type.name_type as type_name,
extract(day from event.creation_date) as days,
count(0) as number
FROM event, type, event_type
WHERE event.id = event_type.event_id
AND type.type_id = event_type.type_id
AND event.creation_date between now() - interval '1 YEAR' and now()
GROUP BY days, type_name
order by min(event.creation_date) asc;
我的问题是,当我将其结果可视化时,有几行具有相同的天数。 我希望天数像一个键一样,这样每个天数都有一个唯一的行。
另一个要求是必须根据滚动月份(基于当前日期)对结果进行排序,因此这里例如第一行是 7,最后一行是 6。
和想法?
任何帮助表示赞赏:) 祝你有美好的一天!
(PS:我不能提供样本数据)
我正在回应 Armand 的评论,即“我真正的挣扎是按照我的意愿订购”
真正的问题是,“我如何将数字序列排序为 7、6、5、4、3、2、1、31、30、29 等?”
答案是使用模运算。 如果您将30 minus day(current_date)
添加到这些数字中的每一个,您将得到30 minus day(current_date)
等。
如果你然后将这些数字的余数(模数)除以 31,你会得到 30、29、28、27、26、25、24、23、22、21。瞧,你有一个序列来放置一个订单通过(降序)。
所以答案是Order By mod(days + 30 - day(Current_date),31) desc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.