Deveria estar aproveitando o Natal! emblema

Devia estar aproveitando o Natal!

Este código concede um distintivo a cada usuário que fizer login entre o “Dia do Ano” 358 e 2 dias após o início do novo ano. Formule como preferir!

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

O que eu gostaria que ele fizesse é conceder o distintivo a cada dia que o usuário visitar entre as duas datas. Ajuda, por favor!

Acho que, se você adicionar outro campo como o “visited_at”, funciona.

Isso porque você está usando apenas user_id e current_timestamp, e eles são distintos apenas pelo user_id, já que current_timestamp seria o mesmo em todas as linhas.
Se você adicionar visited_at, eles podem ser distintos, permitindo assim uma insígnia para cada dia.

Mas talvez você já tenha resolvido isso :wink:

Edit1: Na verdade, acho que essa consulta não precisa do DISTINCT.

Baseando-me no que @Rafael_Lima_Vasconce sugeriu, criei o seguinte como exemplo de uma insígnia “Páscoa 2019”.

Não tenho nenhuma experiência com SQL além de modificar valores numéricos em algumas consultas de insígnias legais postadas aqui, mas não vejo nenhuma indicação de que isso não funcione (assumindo que você ainda esteja tentando encontrar uma solução).

Se você quiser que as pessoas recebam a insígnia várias vezes, acredito que basta ativar essa opção de marcação ao configurar sua insígnia. Caso contrário, ela deve conceder a insígnia apenas na primeira vez em que visitarem durante o período especificado.