Usuários com primeiro post dentro do período

Olá! Sou iniciante em SQL. Gostaria de conseguir extrair uma lista de usuários que postaram pela primeira vez dentro de um período de tempo definido.

Observe que se trata da primeira vez que eles postam, e não da primeira vez que se cadastraram. Nosso caso de uso é diferente da maioria, então o post é o ponto importante.

Alguém tem algo assim? Agradeço qualquer ajuda!

OBRIGADO!

Isso deve resolver o problema, @ThunderThighs. Adicione ao seu Data Explorer, preencha a data de início e a data de fim, e você estará pronto para começar. As datas devem seguir um formato suportado, sendo um deles AAAA-MM-DD.

Usuários com primeiro post no período

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

SELECT username
FROM users u
JOIN user_stats us
ON u.id = us.user_id
WHERE us.first_post_created_at BETWEEN :start_date::date AND :end_date::date

Isso é super útil.

Como você faria para aprimorar isso e realmente recuperar essas postagens?

Algo assim atenderia às suas necessidades?

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

SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND :end_date::date

Isso é perfeito. Muito obrigado.

Posso fazer uma pergunta básica sobre SQL? O que são os u e us nas linhas dois e três? Eles funcionam de forma semelhante ao AS, permitindo que users seja referido pelo prefixo u e user_stats pelo prefixo us?

Sem problema!

Isso está correto. O u e o us são apelidos de tabelas. Você pode ler mais sobre eles aqui: http://www.postgresqltutorial.com/postgresql-alias/

É essencialmente uma abreviação. Isso permite que você use us.user_id em vez de user_stats.user_id para se referir à coluna user_id na tabela user_stats. É especialmente útil com nomes de tabelas longos e consultas grandes.