СГРУППИРУЙТЕ ПО количеству также отсутствующих типов (БД Maria)

#mysql

Вопрос:

 select kyc_type, count(*)
from kyc_table
where YEAR(created_at) = 2020
GROUP BY(kyc_type);
 

всего существует 5 типов kyc

 kyc = ['self','shg','mfg','jlg','or'];
 

если он найдет только один тип kyc, например, «shg», то он вернет только

 --  ---------- ---------- 
-- | kyc_type | count(*) |
--  ---------- ---------- 
-- | shg      | 2        |
--  ---------- ---------- 
 

это, но я хочу, чтобы другие возвращали 0, если нет, как я могу это сделать?

Ответ №1:

Вы можете выполнить дополнительный выбор. Сначала сгруппируйте, kyc_type а затем для каждого типа выполните подсчет.

 select a.kyc_type,
       (
           select count(*)
           from kyc_table x
           where x.kyc_type = a.kyc_type and YEAR(created_at) = 2020
       ) as count
from kyc_table a
group by(kyc_type);
 

Комментарии:

1. спасибо, что он просыпается ( только одна опечатка, которую я нашел после x kyc_type, это должен быть.kyc_type) выберите.kyc_type, (выберите количество(*) из таблицы kyc_type x, где x.kyc_type = a.kyc_type и ГОД(created_at) = 2020 ) в качестве количества из таблицы kyc_table группа по(kyc_type);