現在、aMember を使用して WordPress サイトの支払いを管理し、ペイウォールを適用するサイトに取り組んでいます。私はそれをセットアップした管理者ではありませんでした。私はまだ彼らのデータベースの使い方を学んでいます。さらに、私の SQL-fu は弱いです。私はトレーニングを受けたエンジニアではありませんが、組織内で SQL をまったく知っているのは私だけです。
私の CFO は、新規登録数を 2 年前までさかのぼって日別に分類したレポートを求めています。私の知る限り、aMember はこれを簡単に分析していません。それが持っているのは、これまでに受け取ったすべての支払いの完全な記録です。
この支払い記録を日付ごとに簡単に分類して、特定の日に受け取った支払いの数を確認できます。問題は、これらの支払いの多くが既存のユーザーからのものであることです。さらに、購読、キャンセル、再購読したユーザーもいます。これは「完全な失効」と見なされるため、しきい値は 30 日です。そのため、[date] から 30 日以内に有効期限が切れた支払いがあるユーザーによる [date] の支払いは無視したいと考えています。
例: John Smith は 2012 年 12 月 1 日に登録しました。John Smith の最後の支払いは 2013 年 1 月 1 日に期限切れになりました。ジョンのアカウントは更新されません。John は 2013 年 1 月 5 日に再登録しました。ジョンの支払いは、2012 年 12 月 1 日に「新規」としてカウントされる必要がありますが (彼には以前の支払いが記録されていないため)、2013 年 1 月 5 日にはカウントされません (彼の支払いは 30 日以内の 1 月 1 日に期限切れになるため)。 1/5の支払い)。
スキーマは以下のとおりです。既存のメンバーの更新を除外せず、受け取った支払いの数のみである現在のクエリは次のとおりです。追加情報が必要な場合、または誰かがメンバーについて私以外の知識を持っている場合は、回答を容易にするために他に提供できることをお知らせください。私は頭がいっぱいで、最善を尽くしています!
SELECT begin_date, COUNT( payment_id )
FROM [foo]
WHERE amount >0
GROUP BY begin_date
ORDER BY begin_date DESC
payment_id
member_id
product_id
begin_date
expire_date
paysys_id
receipt_id
amount
completed
remote_addr
data
time