【问题标题】:MS SQL count total items, but only once per user [duplicate]MS SQL计算总项目,但每个用户只有一次[重复]
【发布时间】:2019-07-07 04:07:02
【问题描述】:

我想要 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 知识来使它工作,或者知道在查询中使用的正确术语。所以可能有重复,如果有,请指出。

【问题讨论】:

  • 为什么不应该忽略用户 4 的名字 1
  • 所以您想计算每个名称的不同用户 ID?
  • @PanagiotisKanavos, 4 的数量应该通过每个用户只使用一次name 1 来计算,在这个示例数据中有 4 个。

标签: sql sql-server


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以为 count() 使用不同的用户 ID

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

    【讨论】:

    • 谢谢。我不知道你可以在 COUNT 中使用 DISTINCT。
    【解决方案3】:

    使用distinctcount() 用户ID

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

    【讨论】:

      猜你喜欢
      • 2013-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 2019-08-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多