3

データ

ID-USER-ROLE-PERM
1   1   1   1
2   1   1   2
3   1   1   3
4   1   1   4
5   1   1   5
6   1   1   6
12  1   1   7
13  1   1   8
9   1   3   1
10  1   3   5
11  1   4   1
14  13  1   8

クエリの説明:何人のユーザーが値1をとっていROLEますか?

結果は次のようになります: 2

ユーザー番号1と13のみが値1を次のように取るためです。ROLE

これは9を返す私の間違ったクエリです:

SELECT COUNT(*) FROM assigned_roles WHERE ROLE = 1 GROUP BY ROLE

代わりに2を返す方法はありますか?

4

1 に答える 1

7

異なるユーザーの数を数えるには、を使用しますCOUNT(DISTINCT USER)

GROUP BY ROLEまた、WHERE句では最大1つのグループしか存在できないことが保証されているため、必要ありません。

SELECT COUNT(DISTINCT USER) 
FROM assigned_roles 
WHERE ROLE = 1 

SQLフィドル

于 2013-03-26T17:47:59.303 に答える