#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);