2

以下の値を持つ test という名前のテーブルがあります。オープン ID を使用しているユーザーの数を取得したいと考えています。

----+----------+-----------+
| NAME   | PROVIDER | OPERATION |
+--------+----------+-----------+
| Samuel | Google   | P         |
| Samuel | Google   | V         |
| Kannan | Google   | V         |
| George | Google   | V         |
| Bush   | Google   | V         |
| Bush   | Yahoo    | V         |
+--------+----------+-----------+

クエリ:select distinct(Name) from test group by PROVIDER

結果:

+-----------------------+----------+  
| count(distinct(NAME)) | PROVIDER |  
+-----------------------+----------+  
|                     4 | Google   |  
|                     1 | Yahoo    |  
+-----------------------+----------+

このクエリでは、ユーザー操作がPROVIDER のPであるカウントを無視したいと思います。単一のクエリでこれを行うにはどうすればよいですか?

出力は

+-----------------------+----------+
| count(distinct(NAME)) | PROVIDER |
+-----------------------+----------+
|                     3 | Google   |
|                     1 | Yahoo    |
+-----------------------+----------+
4

2 に答える 2

4

これを試して、

SELECT  `Provider`, COUNT(DISTINCT Name)
FROM    tableName
WHERE   NAME NOT IN
            (
                SELECT Name
                FROM tableName
                WHERE Operation = 'P'
            )
GROUP BY Provider

SQLFiddle デモ

于 2012-09-06T16:09:23.813 に答える
0
select count(distinct(Name)) from test where operation != 'P' group by PROVIDER;
于 2012-09-06T16:08:24.967 に答える