Unire le tabelle di marketing
Sessioni, utenti e ordini
Unire le tabelle di marketing è una lezione Digital Marketing Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Digital Marketing Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Digital Marketing Academy include 4 lezioni in totale.
Perché usare le JOIN?
Le domande reali coinvolgono più tabelle. La spesa si trova nelle campagne, i ricavi negli ordini e le caratteristiche negli utenti. Per calcolare il ROAS o l'LTV per segmento, dovete combinarle.
Le JOIN associano le righe di due tabelle usando una chiave condivisa, come user_id o campaign_id.
SELECT o.order_id, u.country
FROM orders o
JOIN users u ON o.user_id = u.user_id;INNER JOIN
Una INNER JOIN restituisce solo le righe che trovano una corrispondenza in entrambe le tabelle. Gli ordini senza un utente corrispondente, o gli utenti senza ordini, vengono esclusi.
Utilizzatela quando vi interessano solo i record presenti su entrambi i lati, ad esempio gli acquirenti.
SELECT u.user_id, u.country, SUM(o.revenue) AS revenue
FROM users u
JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id, u.country;LEFT JOIN
Una LEFT JOIN mantiene ogni riga della tabella a sinistra anche quando non esiste una corrispondenza a destra. I valori mancanti vengono restituiti come NULL.
È il modo per trovare gli utenti che non hanno mai effettuato un ordine o le sessioni che non hanno mai prodotto una conversione.
SELECT u.user_id, COALESCE(SUM(o.revenue), 0) AS revenue
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
GROUP BY u.user_id;Trovare le lacune
Abbinate una LEFT JOIN a un controllo su NULL per isolare le righe senza corrispondenza. «Quali registrazioni non hanno mai portato a un acquisto?» è una domanda classica sulla retention.
Il fatto che il lato destro sia NULL significa che non esisteva alcun ordine corrispondente.
SELECT u.user_id, u.signup_date
FROM users u
LEFT JOIN orders o ON o.user_id = u.user_id
WHERE o.order_id IS NULL;Collegare sessioni e ordini
Collegare le sessioni agli ordini mette in relazione il comportamento con il risultato. Abbinate i dati tramite user_id per vedere quale traffico ha portato infine a un acquisto.
Questa è la base dell'analisi dell'attribuzione dei canali.
SELECT s.channel, SUM(o.revenue) AS revenue
FROM sessions s
JOIN orders o ON o.user_id = s.user_id
GROUP BY s.channel;Calcolare il ROAS
Per calcolare il ROAS reale servono spesa e ricavi affiancati. Collegate le campagne agli ordini tramite campaign_id, quindi dividete i totali.
NULLIF protegge dalla divisione per zero quando la spesa è nulla.
SELECT c.campaign_id,
SUM(o.revenue) / NULLIF(SUM(c.spend), 0) AS roas
FROM campaigns c
LEFT JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.campaign_id;Alias delle tabelle
Gli alias (o per orders, u per users) mantengono brevi e non ambigue le query che coinvolgono più tabelle. Qualificate sempre le colonne quando lo stesso nome esiste in entrambe le tabelle.
Alias chiari rendono molto più semplice leggere ed eseguire il debug di JOIN complesse.
SELECT c.name AS campaign, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
GROUP BY c.name;Collegare tre tabelle
Potete concatenare le JOIN per riunire più di due tabelle. In questo caso colleghiamo campagne, ordini e utenti per suddividere i ricavi per paese.
Ogni JOIN aggiunge una nuova condizione ON che collega la nuova tabella all'insieme esistente.
SELECT c.name, u.country, SUM(o.revenue) AS revenue
FROM campaigns c
JOIN orders o ON o.campaign_id = c.campaign_id
JOIN users u ON u.user_id = o.user_id
GROUP BY c.name, u.country;Attenzione al livello di dettaglio
Unire una relazione uno-a-molti può moltiplicare le righe e gonfiare le somme. Se una campagna ha molti ordini, sommare la spesa per ordine la conta più volte.
Aggregate separatamente ciascun lato, quindi unite i totali per mantenere corretti i numeri.
SELECT c.campaign_id, c.total_spend, r.revenue
FROM campaigns c
JOIN (
SELECT campaign_id, SUM(revenue) AS revenue
FROM orders GROUP BY campaign_id
) r ON r.campaign_id = c.campaign_id;Attribuzione al primo contatto
Per attribuire il merito al primo canale da cui è arrivato un utente, individuate la prima sessione di ciascun utente e collegatela poi ai suoi ordini.
Una sottoquery isola il primo contatto prima del collegamento con i ricavi.
SELECT f.channel, SUM(o.revenue) AS revenue
FROM (
SELECT DISTINCT ON (user_id) user_id, channel
FROM sessions ORDER BY user_id, session_date
) f
JOIN orders o ON o.user_id = f.user_id
GROUP BY f.channel;Le JOIN nella pratica
Le JOIN sono ciò che rende potente SQL per il marketing. Spesa più ricavi dà il ROAS; sessioni più ordini danno l'attribuzione; utenti più ordini danno l'LTV per segmento.
Scegliete INNER quando devono esistere entrambi i lati, LEFT quando volete preservare e analizzare le lacune.
Controllo rapido
Volete elencare tutti gli utenti registrati, compresi quelli che non hanno mai effettuato un ordine. Quale JOIN utilizzate?
Riepilogo
INNER JOIN mantiene le corrispondenze presenti su entrambi i lati; LEFT JOIN mantiene tutte le righe a sinistra e rivela le lacune. Alias e colonne qualificate mantengono pulite le query.
Fate attenzione alla moltiplicazione delle righe nelle JOIN uno-a-molti: aggregate prima i dati per mantenere accurate le somme. Prossimo argomento: query su coorti e funnel.
Impara Digital Marketing Academy con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 63
- Lezioni
- 239
Domande Frequenti
La lezione «Unire le tabelle di marketing» è gratuita?
Sì — il testo completo di «Unire le tabelle di marketing» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Digital Marketing Academy, passa a CoddyKit PRO. Il corso Digital Marketing Academy include 4 lezioni in totale.
Cosa imparerò in «Unire le tabelle di marketing»?
Sessioni, utenti e ordini Eserciti Digital Marketing Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Digital Marketing Academy?
Non è richiesta alcuna esperienza precedente. Digital Marketing Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «Unire le tabelle di marketing»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Digital Marketing Academy?
Sì. Ogni lezione Digital Marketing Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Perché i marketer imparano SQL
- SELECT, WHERE, GROUP BY
- Unire le tabelle di marketing
- Query per coorti e funnel