SQLで月次チャーンレート(解約率・退会率)・継続率を出す
概要
チャーンレート(解約率・退会率)とは、全てのユーザーのうち解約したユーザーの割合を示す指標のことです。継続率は、 1 - チャーンレート
で出ます。
今回は前月からのチャーンレートを見ます。2019-06の時は、2019-05時点のユーザ数のチャーンレートを、2019-05の時は、2019-04時点のユーザ数のチャーンレートを、というように変動的にやるSQLです。
SQL
SELECT
this.month
,count(distinct last.user_id) / count(distinct this.user_id) churn_rate
,1 - count(distinct last.user_id) / count(distinct this.user_id) keizoku_rate
FROM (
-- 当月のユーザー数
SELECT
date_trunc(date(u.created), month) month
,u.id user_id
FROM
users u
GROUP BY month
) this LEFT JOIN (
-- 前月のユーザー数
SELECT
date_trunc(date(u.created), month) month
,u.id user_id
FROM
users u
GROUP BY month
) last ON this.user_id = last.user_id
and this.month = date_add(last.month, interval 1 month) -- 前月処理
GROUP BY month
ORDER BY month DESC
SELECT
this.month
,count(distinct last.user_id) / count(distinct this.user_id) churn_rate
,1 - count(distinct last.user_id) / count(distinct this.user_id) keizoku_rate
FROM (
-- 当月のユーザー数
SELECT
date_trunc(date(u.created), month) month
,u.id user_id
FROM
users u
GROUP BY month
) this LEFT JOIN (
-- 前月のユーザー数
SELECT
date_trunc(date(u.created), month) month
,u.id user_id
FROM
users u
GROUP BY month
) last ON this.user_id = last.user_id
and this.month = date_add(last.month, interval 1 month) -- 前月処理
GROUP BY month
ORDER BY month DESC
ポイントは、当月を前月+1ヶ月と、LEFT JOINすることです。
and this.month = date_add(last.month, interval 1 month)
日別、週別、四半期別、年別に date_trunc(date(u.created), XXXX
)` を使って、分析してみるのも楽しいですね。
また課金しているなどアクティブなユーザーのチャーンレートを見るのも面白いと思います。その場合は、 GROUP BY month, X.user_id
と、ユーザーIDをユニークにすることを忘れずに。
Author And Source
この問題について(SQLで月次チャーンレート(解約率・退会率)・継続率を出す), 我々は、より多くの情報をここで見つけました https://qiita.com/IZUMIRU/items/6fbb30337e137d421930著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .