Mam tabelę o nazwie test z poniższymi wartościami. Chcę pobrać liczbę użytkowników korzystających z otwartego identyfikatora.
----+----------+-----------+
| NAME | PROVIDER | OPERATION |
+--------+----------+-----------+
| Samuel | Google | P |
| Samuel | Google | V |
| Kannan | Google | V |
| George | Google | V |
| Bush | Google | V |
| Bush | Yahoo | V |
+--------+----------+-----------+
Pytanie: select distinct(Name) from test group by PROVIDER
Wynik:
+-----------------------+----------+
| count(distinct(NAME)) | PROVIDER |
+-----------------------+----------+
| 4 | Google |
| 1 | Yahoo |
+-----------------------+----------+
W tym zapytaniu chcę zignorować liczbę operacji użytkownika P dla DOSTAWCY. Jak mogę to zrobić w jednym zapytaniu?
Wyjście powinno być
+-----------------------+----------+
| count(distinct(NAME)) | PROVIDER |
+-----------------------+----------+
| 3 | Google |
| 1 | Yahoo |
+-----------------------+----------+
Odpowiedzi:
4 dla odpowiedzi № 1Spróbuj tego,
SELECT `Provider`, COUNT(DISTINCT Name)
FROM tableName
WHERE NAME NOT IN
(
SELECT Name
FROM tableName
WHERE Operation = "P"
)
GROUP BY Provider
0 dla odpowiedzi nr 2
select count(distinct(Name)) from test where operation != "P" group by PROVIDER;