使用COUNT()和GROUP BY进行查询

时间:2013-03-26 17:46:26

标签: sql

数据

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吗?

1 个答案:

答案 0 :(得分:7)

要计算不同用户的数量,请使用COUNT(DISTINCT USER)

此外,您不需要GROUP BY ROLE,因为您的WHERE子句确保最多只能有一个组。

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

SQL Fiddle