ゲーミフィケーションと招待

これらの線に沿ったものでうまくいくでしょうか(採点可能なクエリ形式に調整されています - これはデータエクスプローラー用のテストです :slight_smile:):

-- [params]
-- date :start_date
-- date :end_date

SELECT
    invited_by_id AS user_id,
    COUNT(*) AS user_invites,
    COUNT(*) * 10 AS invite_score
FROM invited_users iu
  JOIN invites i ON i.id = iu.invite_id
  JOIN users u ON u.id = iu.user_id
WHERE iu.redeemed_at::date BETWEEN :start_date AND :end_date
  AND iu.user_id <> i.invited_by_id
  AND u.created_at > iu.redeemed_at
GROUP BY invited_by_id
ORDER BY user_invites DESC

ユーザーが削除されると、invited_users テーブルからクリアされるため、カウントに含まれなくなります。削除が10日以内に行われた場合、自動的に修正されますが、それより長くかかった場合は手動でのスコア更新が必要になります。

redeemed_at 日付を使用すると、10日以上前に作成された招待も考慮されます。

AND iu.user_id <> i.invited_by_id は、自己招待も除外します。

users テーブルを結合し、AND u.created_at > iu.redeemed_at を追加すると、既存のユーザーを招待することも除外されます。

「いいね!」 3