Próbuję zbudować zapytanie, które mówi mi, ile różnych kobiet i mężczyzn znajduje się w danym zbiorze danych. Osoba jest identyfikowana przez numer "tel". Możliwe, że ten sam "tel" pojawi się wiele razy, ale że "płeć tel powinna być liczona tylko jeden raz!Liczba odrębna MySQL, jeśli warunki są unikalne
7136609221 - mężczyźni
7136609222 - mężczyźni
7136609223 - kobieta
7136609228 - mężczyźni
7136609222 - mężczyźni
7136609223 - kobieta
to example_dataset dawałoby następuje.
całkowitą liczbę unikalnych płeć: 4
Razem wyjątkowy mężczyzna count: 3
Razem wyjątkowy żeński Ilość: 1
Moje nieudane zapytanie:
SELECT COUNT(DISTINCT tel, gender) as gender_count,
COUNT(DISTINCT tel, gender = 'male') as man_count,
SUM(if(gender = 'female', 1, 0)) as woman_count
FROM example_dataset;
Jest rzeczywiście dwóch próbach tam. COUNT(DISTINCT tel, gender = 'male') as man_count
wydaje się po prostu zwracać to samo, co COUNT(DISTINCT tel, gender)
- nie uwzględnia tam kwalifikatora. I SUM(if(gender = 'female', 1, 0))
zlicza wszystkie kobiece rekordy, ale nie jest filtrowany przez DISTINCT tels.
Do czego jako odpowiedź po uruchomieniu tego? –
'COUNT (DISTINCT tel, gender = 'male')' daje man_count = 4 błędnie; powinno być 3 - unikalne na tel. – Federico
SUMA (jeśli (gender = 'female', 1, 0)) daje woman_count = 2, błędnie. Powinien wynosić 1 (unikalny na tel) – Federico