Группа запросов MYSQL по пользовательской дате месяца? - PullRequest
1 голос
/ 29 декабря 2011

Я написал запрос, который возвращает ежемесячные продажи.

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 числа каждого месяцаНе уверен, как это сгруппировать!

Ответы [ 2 ]

1 голос
/ 29 декабря 2011

, поскольку вы имеете дело со «сдвигом» времени, вам придется выполнить эту математику в своем уравнении, чтобы «подделать». Что-то вроде

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

Итак, по сути, вы берете даты например: 11-31 марта + 1-10 апреля и вычитаете из них "10 дней" ... так что для запроса они будут выглядеть как 1-31 марта, и 11-30 апреля будут отображаться как 1-20 апреля + май и т. Д. Для отдыха каждого года ...

0 голосов
/ 29 декабря 2011

Не тестировалось.

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

Адаптировать ее под свои нужды.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...