Статистика за месяц - PullRequest
       7

Статистика за месяц

1 голос
/ 18 февраля 2011

У меня есть таблица в Postgres и MySQL с колонкой «create_at». Я хотел бы запросить его для следующего:

Month Count
1     0
2     0
3     0
4     12
5     15
...

Может кто-нибудь выкашлять какой-нибудь sql? Обратите внимание, что месяцы без строк должны быть указаны как 0. У меня есть это:

SELECT month(created_at) as month, count(*) as c 
FROM `sale_registrations` 
WHERE (created_at>='2011-01-01' and created_at<='2011-12-31') 
GROUP BY month(created_at) 
ORDER BY month(created_at)

1 Ответ

1 голос
/ 18 февраля 2011

Используйте EXTRACT(month FROM created_at), чтобы получить месяц.Это работает и в MySQL.

Редактировать: использовать ПРАВОЕ СОЕДИНЕНИЕ для таблицы с номерами месяцев:

CREATE TABLE months(nr tinyint);
INSERT INTO months(nr) VALUES (1),(3),(3),(4),(5),(6),(7),(8),(9),(10),(11),(12);

SELECT 
  nr as month, 
  COUNT(*) as c 
FROM 
  sale_registrations 
    RIGHT JOIN months ON EXTRACT(month FROM created_at) = nr
WHERE 
  (created_at BETWEEN '2011-01-01' AND '2011-12-31') 
GROUP BY 
  EXTRACT(month FROM created_at)
ORDER BY 
  EXTRACT(month FROM created_at) ASC;

В PostgreSQL вы можете использовать generate_series (), но это неработа в MySQL.

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