MS SQL计算项目总数,但每个用户仅一次

时间:2019-02-13 10:43:01

标签: sql sql-server

我希望从MS SQL数据库中发现NAME的唯一唯一事件,但是对于每个用户来说只能一次。以下是我的数据示例。

USERID      NAME
------------------------
1           name 1
1           name 1
1           name 1
2           name 1
2           name 2
2           name 3
3           name 1
3           name 1
3           name 3
4           name 1

如果我使用以下查询

SELECT COUNT(name) AS total, name FROM TestTable GROUP BY name

我得到以下结果

7   name 1
1   name 2
2   name 3

但是我想要的是下面的结果。该查询应忽略用户1的2x name 1和用户3的1x name 1

4   name 1
1   name 2
2   name 3

我对SQL的知识不足,无法使其正常工作,或者不知道要在查询中使用的正确术语。因此,可能有重复项,如果有,请指向我。

3 个答案:

答案 0 :(得分:4)

使用distinctcount()用户ID

SELECT COUNT(distinct userid) AS total, name FROM TestTable GROUP BY name

答案 1 :(得分:4)

您可以为count()

使用不同的用户ID。
SELECT COUNT(distinct userid) AS total, name FROM TestTable GROUP BY name

答案 2 :(得分:1)

您希望DISTINCT中的COUNT()忽略重复计数:

SELECT COUNT(DISTINCT USERID) AS total, name 
FROM TestTable 
GROUP BY name;