Ниже приведена таблица:
Где столбец Val
имеет 3 различных значения a, b и c.
ID Val
1 a
1 a
1 b
2 b
2 c
2 c
3 c
Я хочу получить количество уникальных идентификаторов и количество идентификаторов для соответствующего значения Val
(т.е. a, b & c).
Я использую такой запрос, но он помогает мне определить счетчик для одного значения Val
за раз.
SELECT ID,COUNT(*)
FROM table1
WHERE Val='c' GROUP BY ID;
Требуемый вывод:
ID count a b c
1 3 2 1 0
2 3 0 1 2
3 1 0 0 1
Вы можете использовать группу by и суммировать счетчик, когда val равно a, b или c. Увидеть ниже:
select id,
count(*) as 'count',
sum(case when val = 'a' then 1 else 0 end) as a,
sum(case when val = 'b' then 1 else 0 end) as b,
sum(case when val = 'c' then 1 else 0 end) as c
from yourTable
group by id;
Просто используйте условную агрегацию:
select id, count(*), sum(val = 'a') as a, sum(val = 'b') as b, sum(val = 'c') as c
from table1
group by id;