我试图计算出我们的客户群每个月增长的次数。每个月的唯一记录的T-SQL计数
例如, “Josh”,“Tim”和“Dustin”已于1月份使用该服务,因此1月份新独特客户的数量为3.
2月份的“Josh”,“Tim”和“Eve”使用该服务。作为“乔希”和“添”以前使用的服务,新的独特的客户数量将是1
等等....
我想,除了语句中使用,但显然这是没有得到正确的结果。
SELECT COUNT(DISTINCT Name) as NewUniqueCustomers, convert(varchar(7), RegDate, 126)
FROM T
GROUP BY convert(varchar(7), RegDate, 126)
EXCEPT
--This should excludie all customers which was included previously
SELECT COUNT(DISTINCT Name)as NewUniqueCustomers, convert(varchar(7), RegDate, 126)
FROM T
WHERE convert(varchar(7), DATEADD(month,-1,RegDate) , 126)
GROUP BY convert(varchar(7), RegDate, 126)
http://sqlfiddle.com/#!3/73621
只是一个说明。不用将日期转换为字符串,而是使用'cast(RegDate as Date)'。转换会阻止服务器使用索引,并导致性能非常差。 –
我希望他们按年份分组。我只是在努力寻找一种方法来排除上个月包含的名称 – Petrik
某些代码正在执行插入的用户?如果这就是为什么不插入检查用户是否已经存在,并添加一个标志,它已经存在或没有, 计数是更容易,你可以添加条件来计算只有那些你被标记为新的用户 – Sherlock