У мене нижче згадана таблиця:
Де 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
Відповіді:
1 для відповіді № 1Ви можете використовувати групу по і підсумовувати кількість, коли 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;
1 для відповіді № 2
Просто використовуйте умовне агрегування:
select id, count(*), sum(val = "a") as a, sum(val = "b") as b, sum(val = "c") as c
from table1
group by id;