【问题标题】:TSQL count distinctTSQL 计数不同
【发布时间】:2018-12-09 07:52:02
【问题描述】:

我正在尝试从表中获取唯一值,该表将以下内容作为时间日志文件保存:

id | time | code | user
1  | 7000 | xxxx | 1 
2  | 7000 | xxxx | 1
3  | 7500 | xxxx | 2
4  | 7000 | xxxx | 3

我想知道当时有多少唯一用户使用过该代码,例如7000,应该说 2,但我写的不同,我得到 3

SELECT Time, COUNT(*) as total, Code
FROM dbo.AnalyticsPause
WHERE CODE = 'xxxx'
GROUP BY  id, Time, Code

结果:

time | Count | code 
7000 | 3     | xxxx
7500 | 1     | xxxx

我想去哪里

time | Count | code 
7000 | 2     | xxxx
7500 | 1     | xxxx

我怎样才能在 id_user 上添加一个 distinct 并始终一起计数

【问题讨论】:

  • 请指定您正在使用的 DBMS。
  • @inkurpatel000 使用dbo 似乎暗示sql-server
  • 它是 TSQL,如标题 :)
  • TSQL(或拼写正确:T-SQL)仍然可以通过 Sybase 或 Microsoft SQL Server - 请在您的问题中添加正确的相关标签
  • 好吧,我不知道这两者的区别,我使用 Azure 所以我猜它是 Microsoft SQL 服务器

标签: sql tsql select count distinct


【解决方案1】:

count(*) 计算总行数(在组中)。你应该只计算distinct user:

SELECT   Time, COUNT(DISTINCT user) as total, Code
FROM     dbo.AnalyticsPause
WHERE    code = 'xxxx'
GROUP BY Time, Code

【讨论】:

  • 我认为这可行,需要对实际代码进行一些测试,但似乎很有希望:)
  • group by 子句中省略id,那么它应该可以工作。 code 也可以从 group by 子句中删除,因为它已在 where 子句中使用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
相关资源
最近更新 更多