w_b_x
@w_b_x

GROUP BY съедает данные, почему?

Здравствуйте!

В общем сегодня тут задавал вопрос, по группировке нескольких SELECT. Select с GROUP BY по дате из 3ех таблиц, если быть точным. В итоге получил ответ, но обнаружил странную работу.

К сути.
Если выполняю такой код:
SELECT `date`,
       case when `user` = 'new_sites'  then cnt else 0 end as new_sites,
       case when `user` = 'new_users' then cnt else 0 end as new_users,
       case when `user` = 'new_leads' then cnt else 0 end as new_leads
FROM (
SELECT `date`, COUNT(*) AS cnt, 'new_sites' as user FROM  `l_sites` GROUP BY `date`
union all
SELECT `date`, COUNT(*) AS cnt, 'new_users' as user FROM  `l_users` GROUP BY `date`
union all
SELECT `date`, COUNT(*) AS cnt, 'new_leads' as user FROM  `l_leads` GROUP BY `date`
) as T

Результат выходит такой:
afbc0e69e503438a8b1305e6eaf113de.pngДаты повторяются, но в целом всё отлично. Осталось то дописать GROUP BY `date` в конце и с делом покончено - подумал я.
Пишу следующий код:
SELECT `date`,
       case when `user` = 'new_sites'  then cnt else 0 end as new_sites,
       case when `user` = 'new_users' then cnt else 0 end as new_users,
       case when `user` = 'new_leads' then cnt else 0 end as new_leads
FROM (
SELECT `date`, COUNT(*) AS cnt, 'new_sites' as user FROM  `l_sites` GROUP BY `date`
union all
SELECT `date`, COUNT(*) AS cnt, 'new_users' as user FROM  `l_users` GROUP BY `date`
union all
SELECT `date`, COUNT(*) AS cnt, 'new_leads' as user FROM  `l_leads` GROUP BY `date`
) as T GROUP BY `date`


В итоге получаем:
a1255b53d18549bf8ece6d1275706d3a.png

Обратите внимание, в первом случае в крайнем правом столбце 3 единицы, в во втором случае с группировкой только две. GROUP BY съедает данные на 2016-08-24. Кстати с столбцом по центру аналогичная ситуация.

В чём проблема и как решить?
  • Вопрос задан
  • 170 просмотров
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Во внешнем запросе тоже должны быть функции COUNT() иначе, как GROUP BY догадается, что нужно сделать с группами.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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