Liczba duplikatów posortowana według kategorii w innej kolumnie - zapytanie SQL

0

Proszę o pomoc z zapytaniem SQL. Podejrzewam, że jest trywialne, ale jeśli chodzi o SQL jestem zielony jak szampon z nasturcji.
Mam dane w postaci tabeli, podobną do uproszczonego przykładu poniżej (w rzeczywistości jest więcej kolumn, ale one nie są istotne w rozwiązaniu problemu) :

A B
x 1
x 1
x 2
y 1
y 2
z 2
z 2
z 1
z 1

Chcę policzyć, w ilu wierszach w kolumnie B powtarzają się wartości w obrębie każdej kategorii z kolumny A, czyli dla przykładowych danych powyżej chciałbym uzyskać taki wynik:
x | 2
y | 0
z | 4

Jak zrobić takie zapytanie?

pozdrawiam

1
select A, SUM(ilosc) from
(select A, Count(*) as ilosc
from tabela
group by A,B
having Count(*) >1)
group by A
0
 select t2.a, isnull(sum(t1.count),0)
from (
SELECT a, b, COUNT(1) as 'count'
FROM Test
group by a,b
having count(1) >1
) as t1 
right join
(select a from Test group by a) as t2 
on t1.a = t2.a
group by t2.a

0
Code Faster napisał(a):
select A, SUM(ilosc) from
(select A, Count(*) as ilosc
from tabela
group by A,B
having Count(*) >1)
group by A

Dziękuję! A dało by się jeszcze zrobić, żeby pokazywało w wynikach również kategorie z zerową liczbą powtórzeń?

1
SELECT t1.a, ifnull(SUM(t2.COUNT),0)
FROM 
(SELECT a FROM Test GROUP BY a) AS t1 
LEFT OUTER JOIN
(SELECT a, b, COUNT(1) AS 'count'
FROM Test
GROUP BY a,b
HAVING COUNT(1) >1) AS t2 
ON t1.a = t2.a
GROUP BY t1.a

Zapytanie dla SQLite, na drugi raz proszę już w tagach, temacie, poście podawać bazę danych.

1 użytkowników online, w tym zalogowanych: 0, gości: 1