
Funnel analysis in SQL
Funnel analysis in SQL. Core lesson of the Advanced SQL for Analytical Systems module with real problem, conceptual model, rigorous formalization, applied case, 3-level lab, and final checkpoint.
What you will learn
- Understand the analytical problem and the decision-making context
- Apply examples, metrics, and controls to real cases
Funnel analysis in SQL
Il funnel analysis serve a trasformare eventi sparsi in passaggi chiari e misurabili. Non basta contare quanti utenti arrivano all’ultimo step: serve definire con precisione ingresso, ordine e vincoli temporali, altrimenti il rischio è leggere il percorso in modo fuorviante e prendere decisioni sbagliate.
Il problema da risolvere
Il team prodotto nota molte iscrizioni ma poche attivazioni, marketing osserva campagne diverse e customer success registra ticket subito dopo l’onboarding. Serve una query che colleghi questi segnali e mostri dove l’utente si perde davvero lungo il processo, perché finché ognuno guarda solo la propria metrica nessuno vede il punto di rottura comune.
Come ragionare su un funnel
Un funnel è una sequenza ordinata di passaggi che un utente deve compiere, e tre domande lo descrivono quasi del tutto. Quanti utenti raggiungono ogni step. Quanti passano da uno step al successivo. Dove si concentra la perdita assoluta di utenti. Vale la pena ricordare che il bottleneck non è sempre lo step con il tasso di conversione più basso, ma quello che fa perdere più utenti in valore assoluto, e i due punti spesso non coincidono.
Rendere l’analisi riproducibile
Per analizzare un funnel in SQL servono alcune definizioni esplicite. L’unità di analisi può essere riga, partizione, finestra, join o coorte. Il segnale principale riguarda correttezza, performance, duplicati, grain e stabilità. La baseline è un periodo precedente, un gruppo comparabile o uno scenario controfattuale. La decisione attesa è una query, un modello intermedio, un test o un pattern riusabile. Il rischio costante è confondere un numero disponibile con una prova sufficiente.
Un caso applicato: HubSpot
HubSpot ha usato il funnel analysis per scoprire che un aggiornamento dell’algoritmo di scoring dei lead riduceva il tasso di conversione lead→MQL ma migliorava la qualità degli MQL. La decisione non fu tornare indietro, ma adattare le quote di marketing. È un buon esempio di come un calo apparente in uno step possa nascondere un miglioramento a valle.
Costruire il funnel in SQL
Il primo passo è aggregare gli eventi per utente ed estrarre il timestamp del primo raggiungimento di ogni step. Una versione semplice conta gli utenti che hanno toccato ciascuno step, ma senza garantire l’ordine corretto degli eventi.
Per imporre l’ordine temporale conviene usare una CTE con condizioni che assicurino che ogni step avvenga dopo il precedente. In questo modo si evitano i conteggi gonfiati da eventi fuori sequenza, che sono una delle cause più frequenti di funnel ottimistici e poco credibili.
Per fissare la logica, prova a costruire un funnel di base che conti gli utenti per ogni step del processo di acquisto, dalla page_view fino al purchase. Va bene un dataset reale o sintetico con almeno 200 righe, una dimensione temporale, dei segmenti e metriche di outcome.
FIRST_VALUE, LAST_VALUE e NTILE per arricchire il funnel
Le window function FIRST_VALUE e LAST_VALUE permettono di identificare il primo e l’ultimo evento rilevante per ogni utente, utili per l’attribuzione e l’analisi di canale. Con LAST_VALUE bisogna definire correttamente il frame, altrimenti la funzione restituisce il valore corrente invece dell’ultimo, che è uno degli errori più insidiosi perché passa inosservato.
NTILE segmenta gli utenti in bucket di pari dimensione, comodo per classificare la velocità con cui completano il funnel. Un esercizio utile è usare FIRST_VALUE per identificare il primo canale di acquisizione di ogni utente e calcolare il tasso di conversione per canale. Chi vuole spingersi oltre può preparare un decision memo completo, con ipotesi, dati, criteri di esclusione, controlli di qualità, soglia decisionale, rischi e piano di monitoraggio.
L’errore tipico da evitare
L’errore più comune è usare il funnel analysis come semplice etichetta o grafico, senza collegare i risultati a una decisione concreta. Se non sai quale scelta cambieresti in base ai dati, l’analisi non è completa.
Per verificare di avere capito, prova a spiegare qual è il bottleneck di un funnel e come si distingue dallo step con il tasso di conversione più basso, perché LAST_VALUE richiede un frame esplicito, come si implementa un funnel ordinato temporalmente in SQL, quale errore comune può invalidare l’analisi e come spiegheresti i risultati a uno stakeholder non tecnico.
Operational Summary
Il funnel analysis diventa uno strumento utile solo quando produce decisioni chiare e azioni concrete. La disciplina sta nel definire con rigore unità di analisi, metriche, baseline e rischi, e nel collegare ogni risultato a una scelta da migliorare.
Related Path
Lessons to read together
Questi collegamenti portano la lezione dentro il resto del corso: basi da riprendere, passaggi successivi e connessioni tematiche tra moduli.