Utilisateurs avec un premier post dans la période

Bonjour. Je suis un débutant en SQL. J’aimerais pouvoir extraire une liste des premiers auteurs de messages par nom d’utilisateur au sein d’une période définie.

Notez qu’il s’agit de leur premier message, et non de la date d’adhésion. Notre cas d’utilisation est différent de la plupart des autres, donc le message est important.

Quelqu’un a-t-il une solution de ce type ? Toute aide est appréciée !

MERCI !

Cela devrait faire l’affaire @ThunderThighs. Ajoutez-le à votre Data Explorer, remplissez les dates de début et de fin, et c’est parti. Les dates doivent correspondre à un format pris en charge, dont YYYY-MM-DD.

Utilisateurs ayant leur premier message dans la période

-- [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

Cela est très utile.

Comment procéderiez-vous pour l’enrichir afin de récupérer réellement ces publications ?

Une solution comme celle-ci répond-elle à vos besoins ?

-- [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

C’est parfait. Merci beaucoup.

Puis-je poser une question de débutant en SQL ? Que font les u et les us sur les lignes deux et trois ? Est-ce qu’ils fonctionnent un peu comme AS, où users peut désormais être référencé avec le préfixe u et user_stats avec le préfixe us ?

Pas de problème !

C’est exact. Les u et us sont des alias de table. Vous pouvez en savoir plus à leur sujet ici : http://www.postgresqltutorial.com/postgresql-alias/

C’est essentiellement une abréviation. Cela vous permet d’utiliser us.user_id au lieu de user_stats.user_id pour faire référence à la colonne user_id dans la table user_stats. C’est particulièrement utile avec des noms de tables longs et des requêtes complexes.