クリスマスを楽しもう!バッジ

クリスマスを満喫すべきです!

このコードは、"年の日"が358日から新年の2日目までの間にログインしたすべてのユーザーにバッジを付与します。表現は自由にお選びください!

SQL:

SELECT distinct(user_id), CURRENT_DATE as granted_at  FROM user_visits WHERE
date_part('doy', visited_at) >= 358
OR
date_part('doy', visited_at) <= 2

実現したいのは、この2つの日の間に毎日訪問するたびにバッジを付与することです。お手伝いください!

「visited_at」のような別のフィールドを追加すれば動くと思います。

現在、user_id と current_timestamp だけを使っているため、user_id だけが区別されている状態です。current_timestamp は行ごとに同じ値になってしまうからです。
visited_at を追加すれば区別できるようになり、毎日バッジを付与できるはずです。

でも、もしかしたらもう解決済みかもしれませんね :wink:

編集1:実は、このクエリに DISTINCT は必要ないような気がします。

@Rafael_Lima_Vasconce さんのご提案を踏まえ、以下を「イースター 2019」バッジの例として作成しました。

私は SQL の経験がほとんどなく、ここで投稿されているクールなバッジクエリの数値を少し修正する程度しかできませんが、このクエリが機能しないという兆候は見当たりません(まだ解決策を探されていると仮定して)。

もし複数の回にわたってバッジを受け取ってほしい場合は、バッジの設定時に「複数回付与」のチェックボックスを有効にするだけで実現できるはずです。それ以外の場合は、指定された期間中に初めて訪問した際にのみバッジが付与されます。