SQL查询以获取活动客户列表。活跃的是每周至少一次在表中的那些

时间:2015-06-19 17:41:56

标签: sql tsql azure-sql-database

我有一个包含客户使用数据的表 - customerID,DateofUsage。因此,任何一天,同一个customerID可能会多次出现。

我想弄清楚活跃客户的列表。活跃的是那些每周至少使用过一次产品的人。

当我使用它时:

    SELECT distinct [CustomerId], datepart(week, [Date]) FROM CustomerUsage
    group by [subscriptionid]

我得到了一个CustomerID列表以及它们在哪个星期使用。我尝试通过这样做来扩展它:

    SELECT distinct [CustomerId], COUNT(datepart(week, [Date])) FROM CustomerUsage
    group by [subscriptionid]

但是现在计数的数字都搞砸了。我希望得到客户活跃的周数,如果这个数字大于到目前为止的周数,我就有了我的清单。知道我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要在datepart之前添加distinct,以确保只计算客户在记录中出现的不同日期。您发布的查询会计算客户所在的每一行。

SELECT distinct [CustomerId]
     , COUNT(Distinct datepart(week, [Date])) 
FROM CustomerUsage
group by [subscriptionid]