会員ログの活用法 第4回

毎月利用する常連会員は何割か

以前からの会員のうち、半年間毎月利用している常連は2割。3割は半年間一度も利用していない。

よくある状況

会員サイトの報告では、月ごとの訪問者数が並びます。毎月同じくらいの人数が利用していると、決まった会員が通ってくれているように見えます。

ただ、毎月利用しているのが同じ会員なのか、月ごとに違う会員なのかは、訪問者数からは分かりません。常連が支えているサイトと、ときどき利用する会員が入れ替わっているサイトでは、打つべき手が違います。

会員IDでアクセスログを会員ごとにまとめると、半年のうち何か月利用したかを会員ごとに数えられます。

半年のうち何か月利用したかで、常連の割合が分かるグラフ

6か月すべて利用した会員は2割強(570人中130人)。半年間一度も利用していない会員が3割を超えている(181人)。

このグラフの数え方

  • 対象:2026年3月以前に登録し、退会していない会員(570人)
  • 「利用した月」:その月にログインしてページを1回以上閲覧した月。1か月に何回利用しても1か月と数える
  • 期間:2026年4〜9月の6か月
  • 言えないこと:利用した月数が少ない理由(関心が薄いのか、必要なときだけ使うのか)までは分からない

架空のサンプルデータで集計した例です。

これが分かると

  • 常連の会員が何に反応しているかを調べれば、ほかの会員への案内の手がかりになります。
  • 「ときどき利用する会員」を常連に近づけるのか、「一度も利用していない会員」を呼び戻すのか、手を打つ相手を決められます。
  • 毎月の訪問者数の中身を、常連とそれ以外に分けて報告できます。

ここに挙げた使い方は一例です。サンプルの数字は架空のもので、実際の結果や施策の効果を約束するものではありません。

試してみる

ここから先は、システム担当者に渡してください。集計SQLで出た結果を、AIプロンプトと一緒にAIへ貼ると、上のようなグラフと読み取りが返ってきます。

集計SQL件数と割合だけを出します
select coalesce(v.months, 0) as months_visited,
       count(*) as members
from member m
left join (
  select member_id, count(distinct to_char(accessed_at, 'YYYY-MM')) as months
  from access_log
  where member_id is not null
    and accessed_at >= '2026-04-01' and accessed_at < '2026-10-01'  -- 期間。実際には集計する期間に差し替える
  group by member_id
) v on v.member_id = m.member_id
where m.registered_at < '2026-04-01'
  and m.withdrawn_at is null
group by 1
order by 1;
AIプロンプト集計結果を貼るだけです
次の表は、会員サイトの以前からの会員(期間の始まりより前に登録した会員)を、半年のうち何か月サイトを利用したか(ログインしてページを見たか)で分けた集計です。
months_visited=利用した月の数(0〜6)、members=会員数(退会者を除く)です。
個人を特定できる列は含めていません。

1. months_visited ごとの members を棒グラフにして、画像で描いてください。各区分に、全体に占める割合を添えてください。
2. 次の点を読み取って、3行程度で教えてください。
   ・毎月利用している常連は何割か
   ・一度も利用していない会員は何割か
   ・常連を増やすのと、一度も利用していない会員を呼び戻すのと、どちらから手を付けるべきか

(ここに集計結果を貼る)
社内用SQL会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
-- 社内用:会員IDの一覧が出ます。社外のサービスやAIには貼らないでください
select m.member_id, m.registered_at, m.occupation, m.specialty
from member m
where m.registered_at < '2026-04-01'
  and m.withdrawn_at is null
  and not exists (
    select 1 from access_log a
    where a.member_id = m.member_id
      and a.accessed_at >= '2026-04-01' and a.accessed_at < '2026-10-01'  -- 期間。実際には集計する期間に差し替える
  )
order by m.registered_at;

SQLとプロンプトは、準備編の汎用テーブルを前提にした例です。実際のテーブル名・列名に合わせて書き換えてください。動作や結果を保証するものではありません。

使う表: member(会員)/access_log(アクセスログ) (表の形は準備編)

試せなかったら

アクセスログに会員IDが残っていないと、この問いには答えられません。
アクセス解析では、同じ人が別の端末から来ると別の訪問者として数えられ、「同じ会員が毎月来ているか」を確かめられないからです。

writeWiredでは、会員IDの付いたアクセスログとメール・フォームの記録が最初から同じ場所に揃っています。会員サイトCMSとしてのwriteWired

次に読む

会員ログの活用法 一覧へ