我需要找出从SQL表中获得结果所需的尝试次数。例如,我的表包含CustomerID,Outcome,OutcomeType。我正在寻找的结果是Sale
所以,如果我有这个记录:
CID Outcome OutcomeID Date
1 No Answer 0 01/01/2015 08:00:00
1 No Interest 0 02/01/2015 09:00:00
1 Sale 1 02/02/2015 10:00:00
1 Follow up 2 03/02/2015 10:00:00
我可以看到它花了2次尝试才能进行销售。我需要为包含数千个条目的表中的所有客户执行此操作。他们可能在销售后有条目,我需要排除这些,他们也可能在第一次销售后有额外的销售,但我只对第一次销售感兴趣。
我希望这是足够的信息,
非常感谢提前
根据要求编辑,我想要的结果是:
CID CountToOutcome
1 2
2 3
3 5
等
答案 0 :(得分:0)
您可以使用窗口函数和聚合来执行此操作:
select cid,
min(case when Outcome = 'Sale' then seqnum end) - 1 as AttemptsBeforeSale
from (select t.*,
row_number() over (partition by cid order by date) as seqnum
from t
) t
group by cid;
注意:这为每个cid
的首次促销提供了价值。