簡體   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