Eu tenho uma tabela chamada teste com valores abaixo. Eu quero buscar quantos usuários estão usando id aberto.
----+----------+-----------+
| NAME | PROVIDER | OPERATION |
+--------+----------+-----------+
| Samuel | Google | P |
| Samuel | Google | V |
| Kannan | Google | V |
| George | Google | V |
| Bush | Google | V |
| Bush | Yahoo | V |
+--------+----------+-----------+
Inquerir: select distinct(Name) from test group by PROVIDER
Resultado:
+-----------------------+----------+
| count(distinct(NAME)) | PROVIDER |
+-----------------------+----------+
| 4 | Google |
| 1 | Yahoo |
+-----------------------+----------+
Nesta consulta eu quero ignorar a contagem que uma operação do usuário é P para um PROVEDOR. Como posso fazer isso em uma única consulta?
Saída deve ser
+-----------------------+----------+
| count(distinct(NAME)) | PROVIDER |
+-----------------------+----------+
| 3 | Google |
| 1 | Yahoo |
+-----------------------+----------+
Respostas:
4 para resposta № 1tente isso,
SELECT `Provider`, COUNT(DISTINCT Name)
FROM tableName
WHERE NAME NOT IN
(
SELECT Name
FROM tableName
WHERE Operation = "P"
)
GROUP BY Provider
0 para resposta № 2
select count(distinct(Name)) from test where operation != "P" group by PROVIDER;