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 !
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
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
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 ?
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.