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 № 1Moż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;