/ / Jak uzyskać liczbę każdej wartości w stosunku do unikalnego identyfikatora w Mysql - mysql, sql

Jak uzyskać liczbę każdej wartości w stosunku do unikalnego identyfikatora w Mysql - mysql, sql

Mam poniższą tabelę:

Gdzie Val kolumna ma 3 różne wartości a, b & c.

ID     Val
1      a
1      a
1      b
2      b
2      c
2      c
3      c

Chcę uzyskać liczbę unikalnych identyfikatorów i liczbę identyfikatorów dla odpowiednich Val wartość (tj. a, b & c).

Używam kwerendy takie jak ta, ale pomaga mi to określić liczbę dla jednego Val wartość na raz.

SELECT ID,COUNT(*)
FROM table1
WHERE Val="c" GROUP BY ID;

Wymagane dane wyjściowe:

ID      count    a     b    c
1       3        2     1    0
2       3        0     1    2
3       1        0     0    1

Odpowiedzi:

1 dla odpowiedzi № 1

Możesz użyć grupowania według i zsumować liczbę, gdy val jest równe a, b lub c. Zobacz poniżej:

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 dla odpowiedzi nr 2

Po prostu użyj agregacji warunkowej:

select id, count(*), sum(val = "a") as a, sum(val = "b") as b, sum(val = "c") as c
from table1
group by id;