@atmden

MySql. Группировка с выравниванием количества строк в каждой группе?

Пытаюсь сделать выборку из базы по группировке за месяц и по типу платежа... т.е. за последнии пол года сколько было платежей каждый месяц в разрезе типов оплаты... например январь - visa 2, счет на оплату 1, февраль - visa 1, счет на оплату 0.
Вот как этот самый 0 получить я немогу понять...

select year(created_at)as yar, month(created_at)as mont, count(*) as nem, type
from `orders`
where type != '' AND month(created_at)>=(month(now())-6) AND year(created_at) = year(now()) 
group by `yar`, `mont`, `type`

Получаю:
p271XLkF09pqvr.jpg

А надо для 7 месяца получить по банку 0, чтобы количество строк в каждой группе было равным.
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
Только костыль:
SELECT 
table_date.yar,
table_date.mont,
table_type.type,
COALESCE(table_group.nem, 0) AS nem

FROM
(SELECT DISTINCT yar, mont FROM ...) AS table_date,

(SELECT DISTINCT type FROM ...) AS table_type

LEFT JOIN ( ваш SELECT) AS table_group 
ON table_date.yar = table_group.yar 
AND table_date.mont = table_group.mont 
AND table_type.type = table_group.type
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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