COUNT для группы NULL или 0 с помощью объединения - PullRequest
0 голосов
/ 20 января 2020

Я пытаюсь определить количество для сгруппированного столбца без записей, я почти получаю требуемые результаты, кроме случаев, когда COUNT равен 0 или NULL. Запрос, который я использую, приведен ниже.

SELECT count(t2.users) as user_count, t3.user_group
FROM db.table1 t1
inner join db.table2 t2 ON t1.id = t2.id
inner join db.table3 t3 on t1.id2 = t3.id
group by t3.user_group
order by t3.user_group;

Результаты [https://i.stack.imgur.com/0NkMb.png] [1]

Результаты, которые я хотел бы видеть [https://i.stack.imgur.com/22Apt.png] [2]

Ответы [ 2 ]

1 голос
/ 20 января 2020

Начните объединения с table3 и используйте left объединения вместо inner (по крайней мере, для объединения между table1 и table2):

SELECT count(t2.users) as user_count, t3.user_group
FROM db.table3 t3
left join db.table1 t1 on t1.id2 = t3.id
left join db.table2 t2 ON t1.id = t2.id
group by t3.user_group
order by t3.user_group;
0 голосов
/ 20 января 2020

попробуйте Left Join вместо использования Inner Join. Обычно Inner Join Only возвращает значения, доступные как в правой, так и в левой таблице. Значит, если имеется доступ к какой-либо записи, это левая таблица, а в правой таблице нет соответствующей информации, тогда Ваш выбранный запрос возвращает пустой набор записей. Все строки по запросу.

, поэтому измените свой запрос на

      SELECT count(t2.users) as user_count, t3.user_group FROM db.table3 t3
              left join db.table1 t1 on t1.id2 = t3.id
              left join db.table2 t2 ON t1.id = t2.id
              group by t3.user_group
              order by t3.user_group;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...