UFN_MEMBERSHIPLEVELS_GETRETENTIONRATE
Calculates the retention rate for a membership level
Return
Return Type |
---|
table |
Parameters
Parameter | Parameter Type | Mode | Description |
---|---|---|---|
@MEMBERSHIPPROGRAMID | uniqueidentifier | IN | |
@LASTENDDATE | datetime | IN | |
@THISENDDATE | datetime | IN |
Definition
Copy
CREATE function [dbo].[UFN_MEMBERSHIPLEVELS_GETRETENTIONRATE](@MEMBERSHIPPROGRAMID uniqueidentifier, @LASTENDDATE datetime, @THISENDDATE datetime)
returns table
return
(
with PREVIOUSMEMBERS_CTE as
(
select
MEMBERSHIPID, MEMBERSHIPLEVELID
from
dbo.UFN_MEMBERSHIPPROGRAM_MEMBERSHIPSASOF(@MEMBERSHIPPROGRAMID, @LASTENDDATE)
where
EXPIRATIONDATE < @THISENDDATE -- exclude memberships that didn't need to renew
and ACTIONCODE <> 4
),
RETAINEDMEMBERS_CTE as
(
select
MEMBERSHIPID
from
dbo.UFN_MEMBERSHIPPROGRAM_MEMBERSHIPSASOF(@MEMBERSHIPPROGRAMID, @THISENDDATE)
where
ACTIONCODE <> 4
)
select
PREV.MEMBERSHIPLEVELID,
case COUNT(distinct PREV.MEMBERSHIPID)
when 0 then 0
else
(
convert(decimal(13,4), COUNT(distinct RET.MEMBERSHIPID)) / convert(decimal(13,4), COUNT(distinct PREV.MEMBERSHIPID))
)
end RETENTIONRATE
from
PREVIOUSMEMBERS_CTE PREV
left join RETAINEDMEMBERS_CTE RET on PREV.MEMBERSHIPID = RET.MEMBERSHIPID
group by
PREV.MEMBERSHIPLEVELID
)