我有一个包含客户使用数据的表 - 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]
但是现在计数的数字都搞砸了。我希望得到客户活跃的周数,如果这个数字大于到目前为止的周数,我就有了我的清单。知道我做错了吗?
答案 0 :(得分:2)
您需要在datepart之前添加distinct,以确保只计算客户在记录中出现的不同日期。您发布的查询会计算客户所在的每一行。
SELECT distinct [CustomerId]
, COUNT(Distinct datepart(week, [Date]))
FROM CustomerUsage
group by [subscriptionid]