/ / Як підрахувати кожне значення проти унікального ідентифікатора в Mysql - mysql, sql

Як отримати кількість кожного значення проти унікального ідентифікатора в Mysql - mysql, sql

У мене нижче згадана таблиця:

Де 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;