/ / Ako získať počet každej hodnoty proti jedinečnému id v Mysql - mysql, sql

Ako získať počítanie každej hodnoty v porovnaní s jedinečným ID v mysql - mysql, sql

Nižšie uvedenú tabuľku:

Kde Val stĺpec má 3 odlišné hodnoty a, b & c.

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

Chcem získať počet jedinečných ID a počet ids pre príslušné Val (t.j. a, b & c).

Používam tento dotaz, ale pomáha mi identifikovať počet pre jeden Val hodnoty.

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

Požadovaný výstup:

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

odpovede:

1 pre odpoveď č. 1

Skupinu môžete použiť a sumarizovať počet, keď sa val rovná a, b alebo c. Pozri nižšie:

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 pre odpoveď č. 2

Stačí použiť podmienenú agregáciu:

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