[英]MYSQL Query group by custom Month date?
我寫了一個查詢,返回月銷售額。
SELECT
count(O.orderid) as Number_of_Orders,
concat (MonthName(FROM_UNIXTIME(O.`date`)),' - ',year(FROM_UNIXTIME(O.date))) as Ordered_Month,
sum(O.total) as TotalAmount,
Month(FROM_UNIXTIME(O.`date`)) as Month_of_Year,
year(FROM_UNIXTIME(O.date)) as Sale_Year
FROM orders O
group by Month_of_Year, Sale_Year
order by Sale_Year DESC,Month_of_Year DESC
我想將其分組為自定義日期,例如
而不是從1號到1號,它應該在每個月的10號至10號分組。 不確定如何將其分組!
因為您要處理時間“偏移”,所以必須在方程式中進行數學運算才能“偽造”。 就像是
SELECT
count(O.orderid) as Number_of_Orders,
concat(
MonthName( Date_Sub( FROM_UNIXTIME(O.`date`), INTERVAL 10 DAY )),
' - ',
Year( Date_Sub( FROM_UNIXTIME(O.date), INTERVAL 10 DAY) )
) as Ordered_Month,
sum(O.total) as TotalAmount,
Month( Date_Sub( FROM_UNIXTIME(O.`date`), INTERVAL 10 DAY )) as Month_of_Year,
Year( Date_Sub( FROM_UNIXTIME(O.date), INTERVAL 10 DAY )) as Sale_Year
FROM
orders O
group by
Month_of_Year,
Sale_Year
order by
Sale_Year DESC,
Month_of_Year DESC
因此,從本質上講,您采用的日期為:3月11日至31日+ 4月1日至10日,並從中減去“ 10天” ...因此,對於查詢,它們看起來像3月1日至31日和4月11日。在每年的其余時間,30將會顯示為4月1日至20日+ 5月,依此類推...
未經測試。
group by Month_of_Year, ceil(day(o.`date`)/10), Sale_Year
為了避免有4個群組但只有3個群組,這是一個更好的主意
select
month(my_date) as your_month,
year(my_date) as your_year,
case
when day(my_date) <= 10 then 1
when day(my_date) between 11 and 20 then 2
else 3 end as decade,
count(*) as total
from table
group by
your_month,your_year,decade
使其適應您的需求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.