# Domande Colloquio Data Analyst Italia 2026: SQL, Python e Analytics > Guida completa alle domande colloquio data analyst in Italia 2026. Query SQL, analisi dati Python, Business Analytics e domande specifiche per il mercato italiano. - Published: 2026-08-26 - Updated: 2026-08-26 - Author: Anthony Fillion-Maillet - Tags: data-analytics, sql, python, interview, italy - Reading time: 12 min --- I colloqui per data analyst in Italia nel 2026 si concentrano fortemente sulla competenza SQL, sulla manipolazione dati con Python e sulla capacità di tradurre problemi aziendali in soluzioni analitiche. Con oltre 600 posizioni aperte a Milano, Roma e Bologna, aziende come Prometeia, Bending Spoons e ABB si aspettano che i candidati dimostrino sia profondità tecnica che acume aziendale. > **Specificità del Mercato Italiano** > > I datori di lavoro italiani danno priorità alle competenze SQL e Power BI. La conoscenza di Python con pandas distingue i candidati, specialmente nelle aziende tech di Milano. Gli stipendi entry-level vanno da 28.000€ a 39.000€, con ruoli senior che raggiungono oltre 80.000€. ## Domande SQL Presenti in Ogni Colloquio Data Analyst SQL rimane il fondamento dei colloqui per data analyst in Italia. I responsabili delle assunzioni in aziende come Italgas e Philip Morris testano i candidati su JOINs, aggregazioni e window functions. Queste domande valutano se un candidato può estrarre insight significativi da database relazionali. ### Domanda 1: Spiega la differenza tra INNER JOIN e LEFT JOIN con un esempio pratico **Risposta attesa:** INNER JOIN restituisce solo le righe dove esistono corrispondenze in entrambe le tabelle. LEFT JOIN restituisce tutte le righe della tabella sinistra più le righe corrispondenti della tabella destra, con valori NULL dove non esiste corrispondenza. ```sql -- orders_analysis.sql -- Trova tutti i clienti e i loro ordini (inclusi clienti senza ordini) SELECT c.customer_id, c.customer_name, o.order_id, o.order_total FROM customers c LEFT JOIN orders o ON c.customer_id = o.customer_id; -- Risultato: Clienti senza ordini appaiono con NULL order_id e order_total -- INNER JOIN escluderebbe completamente quei clienti ``` Gli intervistatori cercano candidati che comprendano quando appaiono i valori NULL e sappiano spiegare il contesto aziendale per la scelta di un tipo di join rispetto ad un altro. ### Domanda 2: Scrivi una query per trovare il secondo stipendio più alto in una tabella Questa domanda testa la conoscenza di subquery, DISTINCT e limitazione dei risultati. Esistono molteplici approcci validi. ```sql -- salary_analysis.sql -- Approccio 1: Usando subquery con MAX SELECT MAX(salary) AS second_highest FROM employees WHERE salary < (SELECT MAX(salary) FROM employees); -- Approccio 2: Usando la window function DENSE_RANK SELECT salary AS second_highest FROM ( SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rank FROM employees ) ranked WHERE rank = 2; ``` L'approccio con window function gestisce correttamente i pareggi. Se tre dipendenti condividono lo stipendio più alto, DENSE_RANK restituisce comunque il valore effettivo del secondo più alto. Usare ROW_NUMBER produrrebbe risultati diversi. ### Domanda 3: Come identifichi e gestisci i record duplicati? **Risposta attesa:** Usa GROUP BY con HAVING COUNT(*) > 1 per identificare i duplicati. L'approccio dipende dalla regola aziendale: mantenere il primo record, il più recente o unire le informazioni. ```sql -- duplicate_detection.sql -- Trova indirizzi email duplicati SELECT email, COUNT(*) AS occurrence_count FROM users GROUP BY email HAVING COUNT(*) > 1; -- Mantieni solo il record più vecchio per ogni email DELETE FROM users WHERE id NOT IN ( SELECT MIN(id) FROM users GROUP BY email ); ``` ### Domanda 4: Spiega le CTE e quando usarle al posto delle subquery Le Common Table Expressions migliorano la leggibilità delle query e permettono query ricorsive. Gli intervistatori italiani spesso chiedono ai candidati di ristrutturare una subquery complessa in CTE. ```sql -- revenue_analysis.sql -- CTE per calcolo fatturato mensile WITH monthly_revenue AS ( SELECT DATE_TRUNC('month', order_date) AS month, SUM(order_total) AS revenue FROM orders WHERE order_date >= '2025-01-01' GROUP BY DATE_TRUNC('month', order_date) ), revenue_growth AS ( SELECT month, revenue, LAG(revenue) OVER (ORDER BY month) AS prev_month_revenue, revenue - LAG(revenue) OVER (ORDER BY month) AS growth FROM monthly_revenue ) SELECT * FROM revenue_growth WHERE growth > 0; ``` Le CTE sono riutilizzabili all'interno della stessa query, a differenza delle subquery che devono essere ripetute. Questo è importante per query analitiche complesse comuni nei ruoli di data analyst. ### Domanda 5: Qual è la differenza tra WHERE e HAVING? **Risposta attesa:** WHERE filtra le righe prima dell'aggregazione; HAVING filtra i gruppi dopo l'aggregazione. WHERE non può riferirsi a funzioni aggregate; HAVING può. ```sql -- sales_filter.sql -- WHERE filtra singole righe SELECT region, SUM(sales) AS total_sales FROM transactions WHERE transaction_date >= '2026-01-01' -- Filtra righe prima GROUP BY region HAVING SUM(sales) > 100000; -- Poi filtra gruppi aggregati ``` ## Domande Python e Pandas per Ruoli Data Analyst Le aziende tech a Milano, in particolare Bending Spoons e Amazon Italia, si aspettano competenza in Python. Queste domande valutano le capacità di manipolazione dati con pandas e visualizzazione di base. ### Domanda 6: Come gestisci i valori mancanti in un DataFrame pandas? **Risposta attesa:** L'approccio dipende dal tipo di dato e dal contesto aziendale. Le opzioni includono eliminare righe, riempire con media/mediana/moda, forward-fill per serie temporali o usare interpolazione. ```python # missing_values.py import pandas as pd import numpy as np df = pd.DataFrame({ 'date': pd.date_range('2026-01-01', periods=5), 'sales': [100, np.nan, 150, np.nan, 200], 'category': ['A', 'B', np.nan, 'A', 'B'] }) # Controlla valori mancanti per colonna print(df.isnull().sum()) # Riempi numerici con mediana (robusto agli outlier) df['sales'] = df['sales'].fillna(df['sales'].median()) # Riempi categorici con moda df['category'] = df['category'].fillna(df['category'].mode()[0]) # Per serie temporali: forward fill df['sales_ffill'] = df['sales'].ffill() ``` Gli intervistatori valutano se i candidati comprendono che eliminare righe alla cieca perde informazioni e che la strategia di riempimento deve allinearsi con l'obiettivo analitico. ### Domanda 7: Spiega la differenza tra merge, join e concat in pandas **Risposta attesa:** `merge()` combina DataFrame su colonne o indici (join tipo SQL). `join()` è un metodo comodo per join basati su indice. `concat()` impila DataFrame verticalmente o orizzontalmente senza corrispondenza. ```python # dataframe_combining.py import pandas as pd orders = pd.DataFrame({'order_id': [1, 2], 'customer_id': [101, 102]}) customers = pd.DataFrame({'customer_id': [101, 103], 'name': ['Alice', 'Bob']}) # merge: join tipo SQL su colonna merged = pd.merge(orders, customers, on='customer_id', how='left') # concat: impila DataFrame df1 = pd.DataFrame({'A': [1, 2]}) df2 = pd.DataFrame({'A': [3, 4]}) stacked = pd.concat([df1, df2], ignore_index=True) ``` ### Domanda 8: Come esegui un'operazione group-by con aggregazioni multiple? ```python # groupby_aggregation.py import pandas as pd df = pd.DataFrame({ 'region': ['North', 'North', 'South', 'South'], 'product': ['A', 'B', 'A', 'B'], 'sales': [100, 150, 200, 50], 'quantity': [10, 15, 20, 5] }) # Aggregazioni multiple con colonne nominate result = df.groupby('region').agg( total_sales=('sales', 'sum'), avg_sales=('sales', 'mean'), total_quantity=('quantity', 'sum'), transaction_count=('sales', 'count') ).reset_index() ``` Questa sintassi (aggregazione nominata) è diventata standard in pandas 1.0+ e rimane attuale in pandas 3.0. Gli intervistatori si aspettano che i candidati la usino invece dell'approccio basato su dizionario più vecchio. ### Domanda 9: Scrivi codice per calcolare il tasso di crescita mese su mese ```python # mom_growth.py import pandas as pd df = pd.DataFrame({ 'month': pd.date_range('2026-01-01', periods=6, freq='MS'), 'revenue': [10000, 12000, 11500, 14000, 15500, 16000] }) # Calcola variazione percentuale df['mom_growth'] = df['revenue'].pct_change() * 100 # Alternativa: calcolo manuale per chiarezza df['prev_revenue'] = df['revenue'].shift(1) df['growth_manual'] = ((df['revenue'] - df['prev_revenue']) / df['prev_revenue']) * 100 ``` ### Domanda 10: Come esegui il pivot dei dati in pandas? ```python # pivot_example.py import pandas as pd df = pd.DataFrame({ 'date': ['2026-01', '2026-01', '2026-02', '2026-02'], 'region': ['North', 'South', 'North', 'South'], 'sales': [100, 150, 120, 180] }) # Pivot: rows=date, columns=region, values=sales pivot_table = df.pivot(index='date', columns='region', values='sales') # pivot_table per aggregazione quando esistono duplicati agg_pivot = pd.pivot_table(df, values='sales', index='date', columns='region', aggfunc='sum') ``` ## Domande Business Analytics e Problem-Solving Le aziende italiane, specialmente nella finanza (Prometeia) e manifattura (ABB), testano il pensiero analitico oltre la pura programmazione. Queste domande valutano come i candidati strutturano i problemi e comunicano le scoperte. ### Domanda 11: Come misureresti il successo di una campagna marketing? **Risposta attesa:** Definire i KPI prima dell'inizio della campagna. Metriche comuni includono tasso di conversione, costo per acquisizione (CPA), return on ad spend (ROAS) e customer lifetime value (CLV). Confrontare con un gruppo di controllo o baseline storica. Una risposta forte include: - Metriche baseline prima del lancio della campagna - Scelta del modello di attribuzione (first-touch, last-touch, multi-touch) - Test di significatività statistica per i risultati - Segmentazione per canale, audience o geografia ### Domanda 12: Un product manager segnala che il fatturato è sceso del 15% questo mese. Come indaghi? **Risposta attesa:** Decomporre il problema sistematicamente: 1. **Verificare i dati**: Controllare problemi di qualità dati, record mancanti o ritardi nel reporting 2. **Analisi per segmento**: Scomporre per prodotto, regione, segmento cliente, canale 3. **Isolare la variabile**: Determinare se il volume è calato, il prezzo è cambiato o il mix si è spostato 4. **Fattori esterni**: Verificare stagionalità, azioni dei competitor, eventi economici 5. **Correlare con altre metriche**: Traffico sito web, tasso di conversione, abbandono carrello ### Domanda 13: Spiega l'A/B testing e quando non dovrebbe essere usato **Risposta attesa:** L'A/B testing confronta due varianti (controllo vs. trattamento) per misurare l'impatto causale. Richiede assegnazione casuale, dimensione del campione sufficiente e una singola metrica di interesse. L'A/B testing non dovrebbe essere usato quando: - La dimensione del campione è insufficiente per la potenza statistica - Il cambiamento riguarda tutti gli utenti (infrastruttura, pricing) - Esistono effetti rete (funzionalità social dove gli utenti si influenzano a vicenda) - Preoccupazioni etiche impediscono di trattenere un cambiamento benefico ### Domanda 14: Come spieghi la significatività statistica a uno stakeholder non tecnico? **Risposta attesa:** La significatività statistica significa che la differenza osservata è improbabile che sia avvenuta per caso. Un p-value inferiore a 0.05 indica meno del 5% di probabilità che il risultato sia avvenuto casualmente. Analogia: lanciare una moneta 10 volte e ottenere 7 teste potrebbe essere caso. Ottenere 95 teste su 100 lanci è statisticamente significativo perché il solo caso non può spiegarlo. ### Domanda 15: Qual è la differenza tra correlazione e causalità? **Risposta attesa:** La correlazione misura come due variabili si muovono insieme. La causalità significa che una variabile influenza direttamente l'altra. Le vendite di gelato e gli annegamenti correlano (entrambi aumentano in estate), ma il gelato non causa annegamenti. Stabilire la causalità richiede: - Precedenza temporale (la causa precede l'effetto) - Correlazione - Eliminazione delle variabili confondenti (esperimento controllato randomizzato) ## Domande di Valutazione Competenze Tecniche Queste domande testano competenze specifiche su strumenti attese nel mercato italiano. ### Domanda 16: Confronta Power BI e Tableau per analytics enterprise Le aziende italiane, particolarmente nel banking e utilities, usano molto Power BI per l'integrazione con l'ecosistema Microsoft. Differenze chiave: | Aspetto | Power BI | Tableau | |---------|----------|--------| | Costo | Più basso (incluso Office 365) | Licenze più costose | | Curva apprendimento | Più facile per utenti Excel | Più ripida, più potente | | Preparazione dati | Power Query integrato | Prep richiede tool separato | | Visualizzazione | Buona, in miglioramento | Best-in-class | | Adozione enterprise | Più alta in Italia | Comune in multinazionali | ### Domanda 17: Cos'è DAX e fornisci un esempio di measure **Risposta attesa:** DAX (Data Analysis Expressions) è il linguaggio formula di Power BI per i calcoli. Le measure calcolano valori dinamicamente basandosi sul contesto filtro. ``` // Measure crescita anno su anno in DAX YoY Growth % = VAR CurrentYearSales = SUM(Sales[Amount]) VAR PreviousYearSales = CALCULATE( SUM(Sales[Amount]), DATEADD(Calendar[Date], -1, YEAR) ) RETURN DIVIDE(CurrentYearSales - PreviousYearSales, PreviousYearSales, 0) ``` ### Domanda 18: Spiega ETL e la sua importanza nell'analytics **Risposta attesa:** ETL sta per Extract, Transform, Load. I dati si muovono dai sistemi sorgente (ERP, CRM, log web) attraverso la trasformazione (pulizia, aggregazione, join) in un data warehouse per l'analisi. Alternative moderne includono ELT (caricare prima i dati grezzi, trasformare nel warehouse) e strumenti come dbt che separano la logica di trasformazione dall'orchestrazione. ### Domanda 19: Quali sono le differenze tra sistemi OLTP e OLAP? | Aspetto | OLTP | OLAP | |---------|------|------| | Scopo | Elaborazione transazioni | Query analitiche | | Modello dati | Normalizzato (3NF) | Denormalizzato (star/snowflake) | | Tipo query | Semplici, frequenti | Complesse, aggregate | | Volume dati per query | Piccolo | Grande | | Esempi | Inserimento ordini, banking | Data warehouse, report BI | ### Domanda 20: Come ottimizzi una query SQL lenta? **Risposta attesa:** Seguire un approccio sistematico: 1. **Analizzare piano esecuzione**: Identificare full table scan, indici mancanti 2. **Aggiungere indici appropriati**: Su colonne in WHERE, JOIN, ORDER BY 3. **Riscrivere pattern inefficienti**: Sostituire subquery correlate con JOIN 4. **Limitare dati presto**: Filtrare prima di fare join su tabelle grandi 5. **Usare query hint con parsimonia**: Solo quando l'optimizer fa scelte sbagliate ```sql -- query_optimization.sql -- Prima: subquery correlata (lenta) SELECT * FROM orders o WHERE o.total > (SELECT AVG(total) FROM orders WHERE customer_id = o.customer_id); -- Dopo: window function (più veloce) SELECT * FROM ( SELECT *, AVG(total) OVER (PARTITION BY customer_id) AS avg_total FROM orders ) sub WHERE total > avg_total; ``` ## Domande Comportamentali e Basate su Scenari Gli intervistatori italiani valutano il fit culturale e le capacità comunicative insieme alle abilità tecniche. ### Domanda 21: Descrivi una situazione in cui la tua analisi ha contraddetto le aspettative degli stakeholder **Struttura risposta forte:** - Situazione: cosa credevano gli stakeholder - Analisi: cosa mostravano effettivamente i dati - Comunicazione: come sono state presentate le scoperte diplomaticamente - Risultato: quale decisione è stata presa e il suo impatto Comportamenti che gli intervistatori cercano: onestà intellettuale, comunicazione diplomatica e fermezza su conclusioni basate sui dati. ### Domanda 22: Come dai priorità a richieste dati urgenti multiple? **Risposta attesa:** - Valutare l'impatto aziendale di ogni richiesta - Chiarire le scadenze e negoziare dove possibile - Identificare quick win vs. analisi approfondite - Comunicare proattivamente timeline realistiche - Escalare vincoli di risorse al management ### Domanda 23: Come assicuri la qualità dei dati nelle tue analisi? **Risposta attesa:** - Validare i dati sorgente prima dell'analisi (controlli null, range, integrità referenziale) - Documentare esplicitamente le assunzioni - Incrociare multiple fonti dati - Implementare controlli qualità dati automatizzati - Rivedere manualmente gli outlier prima di escluderli ### Domanda 24: Descrivi il tuo approccio all'apprendimento di un nuovo tool o tecnologia **Risposta attesa:** - Iniziare con documentazione ufficiale e tutorial - Costruire un piccolo progetto per applicare i concetti - Unirsi a community (Reddit, Stack Overflow, meetup locali) - Insegnare ad altri per consolidare la comprensione ## Domande Specifiche per il Mercato Italiano ### Domanda 25: Quali regolamenti influenzano la data analytics in Italia? **Risposta attesa:** Il GDPR è la normativa principale. Requisiti chiave includono: - Consenso esplicito per l'elaborazione dei dati personali - Diritto alla cancellazione (richieste di eliminazione dati) - Minimizzazione dei dati (raccogliere solo dati necessari) - Valutazioni d'impatto privacy per elaborazioni ad alto rischio Settore-specifici: banking italiano (regolamenti Banca d'Italia), sanità (equivalenti italiani HIPAA), settore pubblico (linee guida CAD e AGID). ### Domanda 26: Come gestisci i dati personali identificabili nei dataset analitici? **Risposta attesa:** - Pseudonimizzazione: sostituire identificatori con token - Aggregazione: riportare a livello di gruppo, non individuale - Mascheramento dati: nascondere porzioni sensibili (email: a***@gmail.com) - Controlli accesso: permessi basati su ruolo per dati sensibili - Policy retention: eliminare dati quando non più necessari ### Domanda 27: Quale esperienza hai con piattaforme dati cloud? Le aziende italiane usano sempre più piattaforme cloud. Comuni nel mercato: - Google BigQuery (Google Cloud) - Amazon Redshift (AWS) - Azure Synapse (integrazione ecosistema Microsoft) - Snowflake (cloud-agnostico) ### Domanda 28: Come comunichi scoperte analitiche ai dirigenti? **Risposta attesa:** - Iniziare con la raccomandazione, non la metodologia - Usare visualizzazioni che i dirigenti possano interpretare in secondi - Quantificare l'impatto aziendale (fatturato, costi, rischio) - Anticipare domande e preparare slide di backup - Evitare gergo; tradurre termini tecnici ### Domanda 29: Quali metriche tracceresti per un'azienda e-commerce? **Risposta attesa:** - **Acquisizione**: fonti traffico, costo per acquisizione - **Comportamento**: bounce rate, pagine per sessione, tempo sul sito - **Conversione**: tasso conversione per fase funnel, abbandono carrello - **Retention**: tasso riacquisto, customer lifetime value - **Fatturato**: valore medio ordine, fatturato per visitatore ### Domanda 30: Come ti tieni aggiornato sui trend della data analytics? **Risposta attesa:** - Seguire pubblicazioni di settore: Towards Data Science, Analytics Vidhya - Partecipare a competizioni Kaggle - Frequentare conferenze: PyData, meetup data science locali a Milano o Roma - Leggere documentazione per nuove release di strumenti - Sperimentare con nuove tecnologie su progetti personali ## Strategia di Preparazione per Colloqui Data Analyst in Italia 2026 - **Padronanza SQL**: Esercitarsi su problemi LeetCode Database e StrataScratch. Le aziende italiane testano intensamente JOINs, window functions e CTEs - **Competenza Python**: Completare esercizi pandas su Kaggle. Focus su pulizia dati e aggregazione - **Familiarità strumenti**: Le competenze Power BI sono molto valorizzate nelle aziende italiane. Tableau è comune nelle multinazionali - **Contesto aziendale**: Preparare esempi da lavori precedenti che dimostrino la traduzione di domande aziendali in approcci analitici - **Lingua italiana**: Mentre molte aziende tech operano in inglese, la fluenza in italiano migliora le opportunità in settori tradizionali (banking, manifattura, utilities) --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/it/blog/data-analytics/data-analyst-interview-questions-italy-2026