Ciao! Sono un principiante di SQL. Vorrei poter estrarre un elenco di utenti che hanno pubblicato per la prima volta, entro un determinato periodo di tempo.
Nota: si tratta della loro prima pubblicazione, non della data di registrazione. Il nostro caso d’uso è diverso dalla maggior parte, quindi il post è fondamentale.
Qualcuno ha qualcosa di simile? Apprezzo qualsiasi aiuto!
Questo dovrebbe funzionare @ThunderThighs. Aggiungilo al tuo Data Explorer, inserisci la data di inizio e quella di fine, e sei pronto a partire. Le date devono corrispondere a un formato supportato, uno dei quali è YYYY-MM-DD.
Utenti con il primo post pubblicato nel periodo
-- [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
Sarebbe qualcosa di simile a soddisfare le tue esigenze?
-- [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
Posso farti una domanda da principiante di SQL? Cosa fanno la u e la us nelle righe due e tre? Funzionano un po’ come AS, in modo che users possa ora essere riferito con il prefisso u e user_stats con il prefisso us?
Si tratta essenzialmente di una scorciatoia. Ti permette di utilizzare us.user_id invece di user_stats.user_id per fare riferimento alla colonna user_id nella tabella user_stats. È particolarmente utile con nomi di tabelle lunghi e query complesse.