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