我有一张桌子,上面有一组成员,他们的覆盖范围开始日期,但没有结束日期。我需要编写一个查询,这将帮助我确定在给定年份中列表中有多少个唯一成员。因此,基本上,我需要按年细分的唯一成员数,因为我只有他们的会员资格的开始日期,而没有结束日期。这将使我对每年退出的人数有一个认识。
输入
Member Start date End date
------------------------------
A 1/1/2016
B 1/2/2016
C 1/3/2016
D 1/2/2017
E 1/3/2017
F 1/5/2018
预期结果将是:
Year Member Count
---------------------
2016 3
2017 2
2018 1
如果该成员已包括在2016年,2017年的人数中,则意味着他已经在我身边2年了。我知道开始日期,我会指定每年的12/31直到他在那里作为结束日期,这给了我他作为我的客户的时间。希望这是有道理的。我需要弄清楚客户何时退出的原因是,我不仅要知道我每年有多少客户,而且还要知道在某一年中有多少客户以及他担任客户的持续时间。希望这有道理。
大家好,
请忽略问题的第一部分,让我重新说明问题。
在上面的示例中,假设我具有会员ID和开始日期,该开始日期指示他成为客户的日期。是否有可能找到按月和年细分的有资格的不同成员的数量,并找到按月和年细分的在特定月份有资格的不同成员的数量?
例如,从2011年1月开始,如果我们有10个客户,则2月有5个新客户加入,上个月的8个仍是我的客户,因此2月的独立客户数为13,2月的新成员总数为5
答案 0 :(得分:1)
根据我对您提出的问题的推断,结束日期并不重要。按年份分组并计算不同的会员ID:
library(stringr)
str_replace(text, "^[^.]+\\.\\s*", "")
#[1] "I want to purchase clothes. Also, I want to buy shoes."
如果只想获得缺少成员和结束日期的结果,请在SELECT
YEAR(StartDate)
, COUNT(DISTINCT MemberID)
FROM dbo.YourTable
GROUP BY YEAR(StartDate)
ORDER BY YEAR(StartDate)
之前添加WHERE EndDate IS NULL
。