Как правильно подсчитать одним запросом количество новостей по месяца?

Стоит задача отобразить количество новостей по годам и месяцам вида
2010
сентябрь (1)
июль (4)
июнь (7)
март (12)
февраль (3)
2009

Хочу сделать выборку одним запросом, это же возможно?
На данный момент написал запрос но из за подзапроса где выбираю все существующие года пишет #1242 - Subquery returns more than 1 row

SELECT concat(MONTHNAME(date), ' ', YEAR(date)) as month, (select count(*) from news where YEAR(date) = (select year(date) from news group by year(date))) as count FROM news

если делать такой запрос, результат следующий
SELECT concat(MONTHNAME(date), ' ', YEAR(date)) as month FROM news

хотелось бы как на скриншоте
5c51b6fdb3a08251441593.png
  • Вопрос задан
  • 101 просмотр
Решения вопроса 1
wagoodoogoo
@wagoodoogoo
prestashop, webix, phalcon, vue, slim, craft cms
поле date называть это "моветон" :)
SELECT COUNT(id),  concat(MONTHNAME(date), ' ', YEAR(date)) as month FROM news
GROUP BY month
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Оконные функции вам в помощь, если СУБД не поддерживает, то скорее всего нужно будет писать многоэтажный SQL запрос.
Ответ написан
Комментировать
Select month , count(*) as qty from news group by date_format( колонка с временем создания, ‘%Y-%m’)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы