Le 25 Domande Più Frequenti nei Colloqui di Data Analytics nel 2026
Le domande più comuni nei colloqui di data analytics nel 2026: SQL, Python, Power BI, statistica e domande comportamentali con risposte dettagliate e codice d'esempio.

I colloqui di data analytics nel 2026 vanno ben oltre la sintassi SQL o la costruzione di grafici. I team di selezione valutano la capacità di estrarre significato da dataset disordinati, comunicare risultati a interlocutori non tecnici e collegare ogni metrica a un obiettivo di business. Questa guida copre le 25 domande più ricorrenti nei ruoli di data analyst junior, mid-level e senior.
Ogni domanda include una risposta modello concisa e, dove pertinente, codice SQL o Python eseguibile. Il consiglio è scrivere le query da zero prima di leggere la soluzione. Gli intervistatori danno più peso al processo di ragionamento che a una risposta memorizzata.
Domande SQL per Colloqui di Data Analyst
SQL resta la competenza più testata nei colloqui di data analytics. Ogni azienda con un database relazionale si aspetta che gli analisti scrivano query in autonomia.
1. Qual è la differenza tra WHERE e HAVING?
WHERE filtra le righe prima dell'aggregazione. HAVING filtra i gruppi dopo l'aggregazione. Confondere i due è uno degli errori più frequenti nelle prove tecniche.
-- monthly_revenue.sql
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(amount) AS revenue
FROM orders
WHERE status = 'completed' -- row-level filter
GROUP BY month
HAVING SUM(amount) > 10000; -- group-level filterWHERE riduce il dataset prima che il motore esegua il GROUP BY. HAVING opera sul risultato aggregato. Usare WHERE quando possibile migliora le prestazioni perché riduce il working set nelle fasi iniziali del piano di esecuzione.
2. Le window function spiegate con un esempio pratico
Le window function calcolano un valore su un insieme di righe correlate alla riga corrente, senza collassare il result set. Sono essenziali per ranking, totali progressivi e confronti periodo su periodo.
-- user_ranking.sql
SELECT
user_id,
purchase_date,
amount,
ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY purchase_date) AS purchase_rank,
SUM(amount) OVER (PARTITION BY user_id ORDER BY purchase_date) AS running_total,
LAG(amount) OVER (PARTITION BY user_id ORDER BY purchase_date) AS prev_amount
FROM purchases;ROW_NUMBER assegna un ranking sequenziale per ogni utente. SUM(...) OVER(...) calcola un totale cumulativo senza self-join. LAG recupera il valore della riga precedente per un confronto diretto. Questa combinazione viene richiesta frequentemente per calcolare la crescita mese su mese.
3. Come identificare e rimuovere record duplicati
Il rilevamento dei duplicati è un compito quotidiano per gli analisti che lavorano con log di eventi, export CRM o feed di dati esterni.
-- deduplicate_events.sql
WITH ranked AS (
SELECT *,
ROW_NUMBER() OVER (
PARTITION BY user_id, event_type, DATE_TRUNC('minute', created_at)
ORDER BY created_at
) AS rn
FROM events
)
SELECT * FROM ranked WHERE rn = 1;La CTE assegna un numero di riga all'interno di ogni gruppo di duplicati. Mantenere solo rn = 1 restituisce la prima occorrenza. Questo approccio preserva i dati originali filtrando il rumore.
4. Query per calcolare la retention per coorte settimanale
L'analisi di retention per coorte è una delle analisi più richieste nei team di prodotto e crescita. Il pattern SQL segue una struttura coerente in tutti i database.
-- weekly_cohort_retention.sql
WITH cohorts AS (
SELECT
user_id,
DATE_TRUNC('week', MIN(event_date)) AS cohort_week
FROM user_events
GROUP BY user_id
),
activity AS (
SELECT
c.cohort_week,
DATE_TRUNC('week', e.event_date) AS active_week,
COUNT(DISTINCT e.user_id) AS active_users
FROM user_events e
JOIN cohorts c ON c.user_id = e.user_id
GROUP BY c.cohort_week, DATE_TRUNC('week', e.event_date)
)
SELECT
cohort_week,
EXTRACT(WEEK FROM active_week - cohort_week) AS weeks_since_signup,
active_users
FROM activity
ORDER BY cohort_week, weeks_since_signup;La prima CTE identifica la settimana di iscrizione di ogni utente. La seconda conta gli utenti attivi distinti per coorte e settimana. La query finale trasforma il risultato in una matrice di retention. Un calo marcato alla settimana 1 segnala un problema di onboarding, mentre una curva piatta dalla settimana 4 in poi indica una base utenti stabile.
5. Cos'è una CTE e quando sostituisce una subquery?
Una Common Table Expression (CTE) è un result set temporaneo con nome, definito con WITH. Le CTE migliorano la leggibilità e permettono query ricorsive. Le subquery tendono a produrre SQL annidato difficile da debuggare. Una CTE è preferibile quando la stessa tabella derivata viene referenziata più volte, o quando la logica ha tre o più passaggi di trasformazione.
Domande Python per Data Analysis
Le domande Python si concentrano su Pandas, workflow di pulizia dati e capacità di spiegare il codice in termini di business. Gli intervistatori cercano soluzioni pragmatiche, non astrazioni accademiche.
6. Come gestire valori mancanti in un DataFrame Pandas
I dati mancanti corrompono aggregazioni e input dei modelli. L'approccio dipende dal tipo di colonna e dal contesto di business.
# handle_missing.py
import pandas as pd
import numpy as np
df = pd.read_csv('sales.csv')
# Inspect the extent of missing data
print(df.isnull().sum())
print(df.isnull().mean().round(3)) # percentage per column
# Strategy 1: drop rows where critical columns are null
df_clean = df.dropna(subset=['customer_id', 'amount'])
# Strategy 2: fill numeric columns with median (robust to outliers)
df['amount'] = df['amount'].fillna(df['amount'].median())
# Strategy 3: fill categorical columns with the mode
df['region'] = df['region'].fillna(df['region'].mode()[0])Eliminare le righe funziona quando il tasso di valori mancanti è inferiore al 5% e la colonna è critica. L'imputazione con la mediana è più sicura della media per distribuzioni asimmetriche. L'imputazione con la moda è adatta a colonne categoriche con un valore dominante. Documentare la strategia di imputazione è fondamentale per la tracciabilità.
7. Merge, join e concatenate: quando usare ciascuno
Pandas offre diversi modi per combinare DataFrame. La scelta dipende dall'operazione (per righe o colonne) e dalla necessità di un match basato su chiave.
# combine_dataframes.py
import pandas as pd
orders = pd.read_csv('orders.csv')
customers = pd.read_csv('customers.csv')
# Key-based merge (equivalent to SQL JOIN)
result = orders.merge(customers, on='customer_id', how='left')
# Stack rows from multiple sources
all_events = pd.concat([events_q1, events_q2], ignore_index=True)
# Add columns side-by-side (same row count required)
combined = pd.concat([features, labels], axis=1)merge è la scelta corretta per join basati su chiave. concat con axis=0 predefinito impila le righe. concat con axis=1 affianca le colonne. Usare how='left' preserva tutte le righe del DataFrame sinistro, rispecchiando un SQL LEFT JOIN.
8. Raggruppare, aggregare e trasformare dati di vendita
Le operazioni GroupBy sono l'equivalente Pandas di SQL GROUP BY. Il pattern appare in quasi ogni esercizio tecnico da svolgere a casa.
# sales_analysis.py
import pandas as pd
df = pd.read_csv('transactions.csv', parse_dates=['date'])
# Monthly revenue by product category
monthly = (
df.groupby([pd.Grouper(key='date', freq='M'), 'category'])
.agg(revenue=('amount', 'sum'), orders=('order_id', 'nunique'))
.reset_index()
)
# Add a column with each category's share of total monthly revenue
monthly['share'] = (
monthly.groupby('date')['revenue']
.transform(lambda x: x / x.sum())
.round(4)
)
print(monthly.head(10))agg con aggregazione nominata mantiene l'output leggibile. transform propaga un calcolo a livello di gruppo su ogni riga, evitando un merge separato. Questa combinazione copre la maggior parte dei compiti di reporting ad-hoc.
9. Rilevare e gestire outlier in un dataset
Il rilevamento degli outlier determina se i valori estremi sono errori di inserimento, segnali di frode o casi limite genuini.
# detect_outliers.py
import pandas as pd
import numpy as np
df = pd.read_csv('transactions.csv')
# IQR method
Q1 = df['amount'].quantile(0.25)
Q3 = df['amount'].quantile(0.75)
IQR = Q3 - Q1
lower = Q1 - 1.5 * IQR
upper = Q3 + 1.5 * IQR
outliers = df[(df['amount'] < lower) | (df['amount'] > upper)]
print(f'Outliers found: {len(outliers)} ({len(outliers)/len(df)*100:.1f}%)')
# Cap instead of remove (winsorization)
df['amount_capped'] = df['amount'].clip(lower=lower, upper=upper)Il metodo IQR segnala i valori oltre 1,5 volte l'intervallo interquartile. Il capping (winsorizzazione) preserva il numero di righe limitando l'influenza dei valori estremi. La rimozione è appropriata solo quando gli outlier rappresentano errori evidenti.
Pronto a superare i tuoi colloqui su Data Analytics?
Pratica con i nostri simulatori interattivi, flashcards e test tecnici.
Domande di Statistica e Probabilità
La competenza statistica distingue gli analisti che riportano numeri da quelli che li interpretano correttamente. Queste domande testano la comprensione fondamentale.
10. Spiegare il p-value in modo semplice
Il p-value è la probabilità di osservare un risultato almeno altrettanto estremo di quello misurato, assumendo che l'ipotesi nulla sia vera. Un p-value di 0,03 non significa che c'è il 3% di probabilità che l'ipotesi nulla sia vera. Significa che, se l'ipotesi nulla fosse vera, risultati così estremi apparirebbero per caso il 3% delle volte. La soglia (alpha) è tipicamente 0,05, ma la scelta dipende dal costo di un falso positivo nel contesto specifico.
11. Quando usare la mediana invece della media
La media è sensibile ai valori estremi. Dati su redditi, importi di transazioni e durate delle sessioni sono esempi classici in cui la mediana offre una tendenza centrale più rappresentativa. Un dataset con pochi deal enterprise di alto valore può spostare la media ben al di sopra dell'esperienza tipica del cliente. Riportare la mediana insieme alla media, includendo la deviazione standard, fornisce un quadro completo.
12. Qual è la differenza tra correlazione e causalità?
La correlazione misura la forza e la direzione di una relazione lineare tra due variabili. La causalità significa che una variabile influenza direttamente l'altra. Le vendite di gelato e gli incidenti di annegamento correlano perché entrambi aumentano in estate, non perché uno causa l'altro. Stabilire la causalità richiede un esperimento controllato (A/B test) o un framework rigoroso di inferenza causale come difference-in-differences o variabili strumentali.
13. Errori di Tipo I e Tipo II con un esempio di business
Un errore di Tipo I (falso positivo) si verifica quando un test rigetta erroneamente l'ipotesi nulla. Esempio: concludere che un nuovo flusso di checkout aumenta la conversione quando in realtà non ha effetto, portando a un cambiamento di prodotto inutile. Un errore di Tipo II (falso negativo) si verifica quando un test non rileva un effetto reale. Esempio: mantenere il vecchio checkout perché il test non aveva un campione sufficiente per rilevare un lift genuino del 2%. Aumentare la dimensione del campione riduce gli errori di Tipo II. Abbassare la soglia alpha riduce gli errori di Tipo I ma aumenta quelli di Tipo II.
Domande su Power BI e Visualizzazione Dati
Le domande sulla visualizzazione valutano la capacità di scegliere il grafico giusto, costruire dashboard manutenibili e comunicare storie basate sui dati a un pubblico non tecnico.
14. Cos'è DAX e come differisce da SQL?
DAX (Data Analysis Expressions) è il linguaggio di formule usato in Power BI, Analysis Services e Excel Power Pivot. A differenza di SQL, che opera su insiemi di righe, DAX opera in un contesto di filtro che cambia dinamicamente in base a slicer, filtri e contesto di riga. La funzione CALCULATE in DAX modifica il contesto di filtro prima di valutare un'espressione, un concetto senza equivalente diretto in SQL.
15. La differenza tra import mode e DirectQuery
L'import mode carica i dati nel motore in-memory di Power BI (VertiPaq), garantendo prestazioni rapide ma richiedendo aggiornamenti pianificati. DirectQuery invia le query al database sorgente in tempo reale, assicurando la freschezza dei dati ma dipendendo dalle prestazioni del sistema sorgente. Nel 2026, Microsoft Fabric introduce la modalità Direct Lake, che legge file Parquet da OneLake senza importare o interrogare un endpoint SQL, combinando la velocità dell'import mode con una freschezza quasi in tempo reale.
16. Quando usare un grafico a barre rispetto a un grafico a linee
I grafici a barre confrontano categorie discrete (fatturato per regione, conteggio per prodotto). I grafici a linee mostrano trend su intervalli continui (utenti attivi giornalieri, tasso di churn mensile). Usare un grafico a linee per dati categorici implica un trend tra categorie non correlate, fuorviando il pubblico. Un follow-up comune chiede dei grafici a torta: vanno limitati a mostrare le parti di un tutto con massimo cinque fette, perché l'occhio umano fatica a confrontare angoli con precisione.
17. Come ottimizzare un report Power BI lento
I report lenti derivano tipicamente da colonne in eccesso nel modello dati, misure DAX complesse valutate riga per riga, o visual che interrogano milioni di righe. La checklist di ottimizzazione include: rimuovere le colonne inutilizzate per ridurre le dimensioni del modello, sostituire le funzioni iterator (SUMX, FILTER) con i loro equivalenti non-iterator dove possibile, ridurre il numero di visual per pagina a meno di 15, e usare tabelle di aggregazione per dimensioni ad alta cardinalità. Il Performance Analyzer integrato in Power BI Desktop individua esattamente quale visual o query DAX rappresenta il collo di bottiglia.
Domande Comportamentali e Case Study
Le competenze tecniche portano il candidato al colloquio. Le domande comportamentali determinano se riceverà l'offerta. Ogni risposta dovrebbe seguire il framework STAR: Situazione, Compito, Azione, Risultato.
18. Descrivere un caso in cui l'analisi dati ha cambiato una decisione aziendale
Le risposte efficaci includono una metrica specifica che si è mossa, il metodo di analisi usato e l'impatto in euro o percentuale. Le risposte deboli descrivono una dashboard senza collegarla a un risultato. Struttura d'esempio: "Un'analisi del churn su un prodotto SaaS ha rivelato che gli utenti che non completavano l'onboarding entro 48 ore avevano un tasso di churn superiore del 60% a 30 giorni. Il team prodotto ha aggiunto una sequenza email automatica attivata alla 24a ora, riducendo il churn a 30 giorni di 8 punti percentuali."
19. Come gestire richieste di dati conflittuali dagli stakeholder
Questa domanda testa capacità di prioritizzazione e comunicazione. L'approccio consigliato: chiarire la domanda di business dietro ogni richiesta, identificare le metriche condivise, proporre un'unica dashboard che serva entrambe le esigenze e documentare i compromessi in modo trasparente. Dire "no" a uno stakeholder è accettabile quando supportato da esigenze di data governance o vincoli di risorse, purché venga offerta un'alternativa.
20. Spiegare un'analisi complessa a un pubblico non tecnico
Gli intervistatori chiedono spesso di spiegare un concetto come la regressione o l'analisi per coorte come se si parlasse a un marketing manager. Le migliori risposte usano analogie, evitano il gergo tecnico e ancorano la spiegazione a un risultato di business. "L'analisi per coorte raggruppa i clienti per mese di iscrizione e traccia quanti sono ancora attivi tre mesi dopo. Il grafico mostra che le iscrizioni di gennaio hanno avuto una retention migliore di quelle di febbraio, in linea con le modifiche all'onboarding rilasciate a fine dicembre."
Situazione: definire il contesto. Compito: definire l'obiettivo. Azione: descrivere i passi specifici intrapresi. Risultato: quantificare l'impatto. Gli intervistatori penalizzano le risposte vaghe che saltano il passaggio Risultato.
Domande su Data Cleaning ed ETL
I problemi di qualità dei dati occupano una porzione significativa del tempo di un analista. Queste domande testano competenze di data wrangling nel mondo reale.
21. Come validare i dati dopo l'esecuzione di una pipeline ETL
I controlli di validazione devono coprire conteggio righe (sorgente vs. destinazione), tassi di null su colonne critiche, integrità referenziale tra tabelle e shift nelle distribuzioni dei valori (per rilevare cambiamenti silenti allo schema). Controlli automatizzati che girano dopo ogni esecuzione della pipeline prevengono l'arrivo di dati errati nelle dashboard.
# etl_validation.py
import pandas as pd
def validate_pipeline(source_df: pd.DataFrame, target_df: pd.DataFrame) -> dict:
checks = {}
# Row count match
checks['row_count_match'] = len(source_df) == len(target_df)
# Null rate on critical columns
for col in ['user_id', 'event_date', 'amount']:
null_rate = target_df[col].isnull().mean()
checks[f'{col}_null_rate'] = round(null_rate, 4)
# Revenue reconciliation
source_total = source_df['amount'].sum()
target_total = target_df['amount'].sum()
checks['revenue_diff_pct'] = round(
abs(source_total - target_total) / source_total * 100, 2
)
return checks
results = validate_pipeline(source, target)
for check, value in results.items():
print(f'{check}: {value}')Questa funzione restituisce un dizionario di risultati di validazione che può alimentare un sistema di alerting. Una differenza di fatturato superiore allo 0,01% dovrebbe attivare un'indagine.
22. Qual è la differenza tra dati normalizzati e denormalizzati?
I dati normalizzati minimizzano la ridondanza distribuendo le informazioni in tabelle correlate (3NF). I dati denormalizzati combinano le tabelle in strutture più ampie e piatte, ottimizzate per query analitiche a lettura intensiva. I sistemi OLTP favoriscono la normalizzazione per l'integrità dei dati. I data warehouse e gli strumenti BI favoriscono la denormalizzazione (star schema, snowflake schema) per la velocità delle query. Comprendere questo trade-off è fondamentale per progettare pipeline dati efficienti.
Domande di Analytics Avanzato
I ruoli senior richiedono familiarità con sperimentazione, forecasting e strategia dati cross-funzionale.
23. Come progettare un A/B test da zero
Un A/B test richiede cinque componenti: un'ipotesi chiara ("Cambiare il colore del pulsante CTA da grigio a verde aumenterà il click-through rate del 5%"), una metrica primaria (click-through rate), un calcolo della dimensione del campione basato sull'effect size atteso e la potenza desiderata (tipicamente 80%), un'assegnazione casuale degli utenti a gruppo di controllo e trattamento, e una durata predeterminata che tenga conto della stagionalità settimanale. Eseguire il test per almeno due cicli lavorativi completi previene che il bias del giorno della settimana distorca i risultati.
Controllare i risultati prima che il test raggiunga la significatività statistica gonfia il tasso di falsi positivi. Registrare in anticipo il piano di analisi, la dimensione del campione e la durata prima di lanciare il test.
24. Funnel analysis e dove i drop-off contano di più
La funnel analysis traccia la progressione degli utenti attraverso una sequenza di passaggi (es. visita homepage, vista prodotto, aggiunta al carrello, checkout, acquisto). L'ottimizzazione a maggior impatto mira al passaggio con il drop-off assoluto più grande, non il drop-off percentuale più grande. Un calo del 40% da 1.000 utenti alla vista prodotto a 600 all'aggiunta al carrello rappresenta 400 utenti persi. Un calo del 50% da 100 utenti al checkout a 50 all'acquisto rappresenta solo 50 utenti persi. Dare priorità al primo collo di bottiglia genera più conversioni totali.
25. Come costruire una dashboard KPI che gli stakeholder usano davvero
Le dashboard falliscono quando mostrano troppe metriche senza gerarchia. Una dashboard KPI efficace segue la piramide invertita: una o due metriche north-star in cima (es. monthly recurring revenue, net promoter score), metriche di supporto al centro (conversion rate, churn rate, valore medio dell'ordine) e dettagli diagnostici accessibili tramite drill-down. Limitare la vista top-level a sette o meno metriche riduce il carico cognitivo. Aggiungere annotazioni automatiche ("Il fatturato è calato del 12% il 5 marzo a causa di un'interruzione del gateway di pagamento") fornisce contesto che i numeri grezzi non hanno.
Inizia a praticare!
Metti alla prova le tue conoscenze con i nostri simulatori di colloquio e test tecnici.
Conclusione
- Window function SQL, CTE e query di coorte appaiono in quasi tutti gli screening tecnici per data analyst. Saperle scrivere a memoria è un'aspettativa di base.
- La padronanza di Python Pandas copre l'80% dei compiti di analisi ad-hoc. Focus su
merge,groupby,transforme gestione dei null. - Il ragionamento statistico (p-value, correlazione vs. causalità, design sperimentale) distingue chi riporta numeri da chi li interpreta correttamente.
- Le domande su Power BI e visualizzazione testano scelta dei grafici, fondamentali DAX e ottimizzazione delle performance delle dashboard.
- Le risposte comportamentali che seguono il framework STAR e includono risultati quantificati superano le narrative vaghe.
- Esercitarsi con i moduli di colloquio data analytics su SharpSkill per consolidare questi concetti con esercizi a tempo.
- Per una preparazione correlata, la guida ai colloqui Data Science copre le domande su machine learning e modellazione statistica che si sovrappongono ai ruoli di data analyst senior.
Inizia a praticare!
Metti alla prova le tue conoscenze con i nostri simulatori di colloquio e test tecnici.
Tag
Condividi
Articoli correlati

Top 25 Domande di Colloquio per Data Scientist nel 2026
Le 25 domande più frequenti nei colloqui per data scientist nel 2026, con risposte dettagliate, esempi di codice Python e strategie per affrontare ogni argomento con sicurezza.

Domande Colloquio Django: ORM, Middleware e DRF in Profondità
Guida completa alle domande colloquio Django 2026: ottimizzazione ORM, architettura middleware e pattern Django REST Framework con esempi di codice.