используйте 0 вместо NULL
, добавьте недостающие group by
и используйте COUNT(*)
, чтобы получить сумму по каждой группе и упорядочить результат:
SELECT Username,
SUM(CASE WHEN type = 'Yes' THEN 1 ELSE 0 END) as Yes,
SUM(CASE WHEN type = 'No' THEN 1 ELSE 0 END) as No,
SUM(CASE WHEN type = '' THEN 1 ELSE 0 END) as Other,
COUNT(*) as TOTAL
FROM table
WHERE source = 'CompanyName'
group by Username
order by TOTAL desc;
Предполагается, что type
может быть только «Да», «Нет» или «».