繁体   English   中英

在滚动期间订购 postgreSQL 查询 (2)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM