Questions d'Entretien Data Analyst Italie 2026 : SQL, Python et Analytics

Les questions d'entretien data analyst en Italie pour 2026 couvrent SQL, Python pandas, et l'analyse business. Ce guide présente 30 questions techniques avec réponses détaillées et exemples de code.

Questions d'Entretien Data Analyst Italie 2026 : SQL, Python et Analytics

Les entretiens de data analyst en Italie pour 2026 se concentrent fortement sur la maîtrise de SQL, la manipulation de données avec Python, et la capacité à traduire des problèmes business en solutions analytiques. Avec plus de 600 postes ouverts à Milan, Rome et Bologne, des entreprises comme Prometeia, Bending Spoons et ABB attendent des candidats une expertise technique approfondie combinée à une compréhension des enjeux métier.

Spécificités du marché italien

Les employeurs italiens privilégient les compétences SQL et Power BI. La maîtrise de Python avec pandas différencie les candidats, notamment dans les entreprises tech de Milan. Les salaires d'entrée varient de 28 000 € à 39 000 €, les postes seniors atteignant 80 000 €+.

Questions SQL présentes dans chaque entretien Data Analyst

SQL reste le fondement des entretiens data analyst en Italie. Les responsables du recrutement chez Italgas et Philip Morris testent les candidats sur les JOIN, les agrégations et les window functions. Ces questions évaluent la capacité à extraire des insights pertinents des bases de données relationnelles.

Question 1 : Expliquer la différence entre INNER JOIN et LEFT JOIN avec un exemple pratique

Réponse attendue : INNER JOIN retourne uniquement les lignes où des correspondances existent dans les deux tables. LEFT JOIN retourne toutes les lignes de la table de gauche plus les lignes correspondantes de la table de droite, avec des valeurs NULL en l'absence de correspondance.

sql
-- orders_analysis.sql
-- Trouver tous les clients et leurs commandes (y compris les clients sans commandes)
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;

-- Résultat : Les clients sans commandes apparaissent avec order_id et order_total NULL
-- INNER JOIN exclurait entièrement ces clients

Les recruteurs recherchent des candidats qui comprennent quand les valeurs NULL apparaissent et peuvent expliquer le contexte métier pour choisir un type de jointure plutôt qu'un autre.

Question 2 : Écrire une requête pour trouver le deuxième salaire le plus élevé dans une table

Cette question teste la connaissance des sous-requêtes, DISTINCT et la limitation des résultats. Plusieurs approches valides existent.

sql
-- salary_analysis.sql
-- Approche 1 : Utilisation d'une sous-requête avec MAX
SELECT MAX(salary) AS second_highest
FROM employees
WHERE salary < (SELECT MAX(salary) FROM employees);

-- Approche 2 : Utilisation de 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'approche avec window function gère correctement les égalités. Si trois employés partagent le salaire le plus élevé, DENSE_RANK retourne toujours la vraie deuxième valeur. L'utilisation de ROW_NUMBER donnerait des résultats différents, ce qui démontre la compréhension des fonctions de fenêtrage SQL.

Question 3 : Comment identifier et gérer les enregistrements en double ?

Réponse attendue : Utiliser GROUP BY avec HAVING COUNT(*) > 1 pour identifier les doublons. L'approche dépend de la règle métier : conserver le premier enregistrement, le plus récent, ou fusionner les informations.

sql
-- duplicate_detection.sql
-- Trouver les adresses email en double
SELECT email, COUNT(*) AS occurrence_count
FROM users
GROUP BY email
HAVING COUNT(*) > 1;

-- Conserver uniquement le premier enregistrement pour chaque email
DELETE FROM users
WHERE id NOT IN (
    SELECT MIN(id)
    FROM users
    GROUP BY email
);

Question 4 : Expliquer les CTE et quand les utiliser à la place des sous-requêtes

Les Common Table Expressions améliorent la lisibilité des requêtes et permettent les requêtes récursives. Les recruteurs italiens demandent souvent aux candidats de restructurer une sous-requête complexe en CTE.

sql
-- revenue_analysis.sql
-- CTE pour le calcul du revenu mensuel
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;

Les CTE sont réutilisables dans la même requête, contrairement aux sous-requêtes qui doivent être répétées. Cela compte pour les requêtes analytiques complexes courantes dans les postes de data analyst.

Question 5 : Quelle est la différence entre WHERE et HAVING ?

Réponse attendue : WHERE filtre les lignes avant l'agrégation ; HAVING filtre les groupes après l'agrégation. WHERE ne peut pas référencer les fonctions d'agrégation ; HAVING le peut.

sql
-- sales_filter.sql
-- WHERE filtre les lignes individuelles
SELECT region, SUM(sales) AS total_sales
FROM transactions
WHERE transaction_date >= '2026-01-01'  -- Filtrer les lignes d'abord
GROUP BY region
HAVING SUM(sales) > 100000;              -- Puis filtrer les groupes agrégés

Prêt à réussir tes entretiens Data Analytics ?

Entraîne-toi avec nos simulateurs interactifs, fiches express et tests techniques.

Questions Python et Pandas pour les postes Data Analyst

Les entreprises tech de Milan, notamment Bending Spoons et Amazon Italy, exigent la maîtrise de Python. Ces questions évaluent les compétences en manipulation de données avec pandas et en visualisation basique.

Question 6 : Comment gérer les valeurs manquantes dans un DataFrame pandas ?

Réponse attendue : L'approche dépend du type de données et du contexte métier. Les options incluent la suppression des lignes, le remplissage par moyenne/médiane/mode, le forward-fill pour les séries temporelles, ou l'interpolation.

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']
})

# Vérifier les valeurs manquantes par colonne
print(df.isnull().sum())

# Remplir les numériques avec la médiane (robuste aux outliers)
df['sales'] = df['sales'].fillna(df['sales'].median())

# Remplir les catégorielles avec le mode
df['category'] = df['category'].fillna(df['category'].mode()[0])

# Pour les séries temporelles : forward fill
df['sales_ffill'] = df['sales'].ffill()

Les recruteurs évaluent si les candidats comprennent que supprimer aveuglément des lignes fait perdre de l'information, et que la stratégie de remplissage doit s'aligner avec l'objectif analytique.

Question 7 : Expliquer la différence entre merge, join et concat dans pandas

Réponse attendue : merge() combine les DataFrames sur des colonnes ou des index (jointures style SQL). join() est une méthode pratique pour les jointures basées sur l'index. concat() empile les DataFrames verticalement ou horizontalement sans correspondance.

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 : jointure style SQL sur colonne
merged = pd.merge(orders, customers, on='customer_id', how='left')

# concat : empiler les DataFrames
df1 = pd.DataFrame({'A': [1, 2]})
df2 = pd.DataFrame({'A': [3, 4]})
stacked = pd.concat([df1, df2], ignore_index=True)

Question 8 : Comment effectuer une opération group-by avec plusieurs agrégations ?

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]
})

# Agrégations multiples avec colonnes nommées
result = df.groupby('region').agg(
    total_sales=('sales', 'sum'),
    avg_sales=('sales', 'mean'),
    total_quantity=('quantity', 'sum'),
    transaction_count=('sales', 'count')
).reset_index()

Cette syntaxe (agrégation nommée) est devenue le standard dans pandas 1.0+ et reste actuelle dans pandas 3.0. Les recruteurs attendent des candidats qu'ils l'utilisent plutôt que l'ancienne approche basée sur les dictionnaires.

Question 9 : Écrire du code pour calculer le taux de croissance mois par mois

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]
})

# Calculer la variation en pourcentage
df['mom_growth'] = df['revenue'].pct_change() * 100

# Alternative : calcul manuel pour plus de clarté
df['prev_revenue'] = df['revenue'].shift(1)
df['growth_manual'] = ((df['revenue'] - df['prev_revenue']) / df['prev_revenue']) * 100

Question 10 : Comment pivoter des données dans 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 : lignes=date, colonnes=region, valeurs=sales
pivot_table = df.pivot(index='date', columns='region', values='sales')

# pivot_table pour l'agrégation quand il y a des doublons
agg_pivot = pd.pivot_table(df, values='sales', index='date', 
                           columns='region', aggfunc='sum')

Questions sur l'Analytics Business et la Résolution de Problèmes

Les entreprises italiennes, notamment dans la finance (Prometeia) et l'industrie (ABB), testent la pensée analytique au-delà du code pur. Ces questions évaluent comment les candidats formulent les problèmes et communiquent leurs conclusions.

Question 11 : Comment mesurer le succès d'une campagne marketing ?

Réponse attendue : Définir les KPI avant le lancement de la campagne. Les métriques courantes incluent le taux de conversion, le coût par acquisition (CPA), le retour sur dépenses publicitaires (ROAS), et la valeur vie client (CLV). Comparer avec un groupe de contrôle ou une référence historique.

Une réponse solide inclut :

  • Les métriques de référence avant le lancement de la campagne
  • Le choix du modèle d'attribution (first-touch, last-touch, multi-touch)
  • Les tests de significativité statistique pour les résultats
  • La segmentation par canal, audience ou géographie

Question 12 : Un product manager rapporte que les revenus ont chuté de 15% ce mois-ci. Comment enquêter ?

Réponse attendue : Décomposer le problème de manière systématique :

  1. Vérifier les données : Rechercher des problèmes de qualité des données, des enregistrements manquants ou un retard de reporting
  2. Analyse par segments : Décomposer par produit, région, segment client, canal
  3. Isoler la variable : Déterminer si le volume a baissé, si le prix a changé, ou si le mix a évolué
  4. Facteurs externes : Vérifier la saisonnalité, les actions des concurrents, les événements économiques
  5. Corréler avec d'autres métriques : Trafic du site web, taux de conversion, abandon de panier

Question 13 : Expliquer l'A/B testing et quand il ne devrait pas être utilisé

Réponse attendue : L'A/B testing compare deux variantes (contrôle vs. traitement) pour mesurer l'impact causal. Il nécessite une assignation aléatoire, une taille d'échantillon suffisante, et une métrique d'intérêt unique.

L'A/B testing ne devrait pas être utilisé quand :

  • La taille de l'échantillon est insuffisante pour la puissance statistique
  • Le changement affecte tous les utilisateurs (infrastructure, tarification)
  • Des effets de réseau existent (fonctionnalités sociales où les utilisateurs s'influencent mutuellement)
  • Des préoccupations éthiques empêchent de refuser un changement bénéfique

Question 14 : Comment expliquer la significativité statistique à un interlocuteur non technique ?

Réponse attendue : La significativité statistique signifie que la différence observée a peu de chances d'être due au hasard. Une p-value inférieure à 0,05 indique moins de 5% de probabilité que le résultat se soit produit aléatoirement.

Analogie : lancer une pièce 10 fois et obtenir 7 faces pourrait être le hasard. Obtenir 95 faces sur 100 lancers est statistiquement significatif car le hasard seul ne peut pas l'expliquer.

Question 15 : Quelle est la différence entre corrélation et causalité ?

Réponse attendue : La corrélation mesure comment deux variables évoluent ensemble. La causalité signifie qu'une variable influence directement l'autre. Les ventes de glaces et les noyades sont corrélées (les deux augmentent en été), mais les glaces ne causent pas les noyades.

Établir la causalité nécessite :

  • La précédence temporelle (la cause précède l'effet)
  • La corrélation
  • L'élimination des variables confondantes (expérience contrôlée randomisée)

Questions d'Évaluation des Compétences Techniques

Ces questions testent la maîtrise d'outils spécifiques attendue sur le marché italien.

Question 16 : Comparer Power BI et Tableau pour l'analytics d'entreprise

Les entreprises italiennes, notamment dans la banque et les services publics, utilisent fortement Power BI en raison de l'intégration à l'écosystème Microsoft. Différences clés :

AspectPower BITableau
CoûtPlus bas (inclus dans Office 365)Licence plus élevée
Courbe d'apprentissagePlus facile pour les utilisateurs ExcelPlus raide, plus puissant
Préparation des donnéesPower Query intégréPrep nécessite un outil séparé
VisualisationBon, en améliorationMeilleur de sa catégorie
Adoption entreprisePlus élevée en ItalieCourante dans les multinationales

Question 17 : Qu'est-ce que DAX et fournir un exemple de mesure

Réponse attendue : DAX (Data Analysis Expressions) est le langage de formule de Power BI pour les calculs. Les mesures calculent des valeurs dynamiquement en fonction du contexte de filtre.

text
// Mesure de croissance Year-over-Year en 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)

Question 18 : Expliquer l'ETL et son importance dans l'analytics

Réponse attendue : ETL signifie Extract, Transform, Load. Les données passent des systèmes sources (ERP, CRM, logs web) par la transformation (nettoyage, agrégation, jointures) vers un data warehouse pour analyse.

Les alternatives modernes incluent ELT (charger les données brutes d'abord, transformer dans le warehouse) et des outils comme dbt qui séparent la logique de transformation de l'orchestration.

Question 19 : Quelles sont les différences entre les systèmes OLTP et OLAP ?

AspectOLTPOLAP
ObjectifTraitement des transactionsRequêtes analytiques
Modèle de donnéesNormalisé (3NF)Dénormalisé (star/snowflake)
Type de requêteSimple, fréquentComplexe, agrégé
Volume de données par requêtePetitGrand
ExemplesSaisie de commandes, banqueData warehouse, rapports BI

Question 20 : Comment optimiser une requête SQL lente ?

Réponse attendue : Suivre une approche systématique :

  1. Analyser le plan d'exécution : Identifier les full table scans, les index manquants
  2. Ajouter les index appropriés : Sur les colonnes dans WHERE, JOIN, ORDER BY
  3. Réécrire les patterns inefficaces : Remplacer les sous-requêtes corrélées par des JOIN
  4. Limiter les données tôt : Filtrer avant de joindre de grandes tables
  5. Utiliser les hints avec parcimonie : Uniquement quand l'optimiseur fait de mauvais choix
sql
-- query_optimization.sql
-- Avant : sous-requête corrélée (lent)
SELECT * FROM orders o
WHERE o.total > (SELECT AVG(total) FROM orders WHERE customer_id = o.customer_id);

-- Après : window function (plus rapide)
SELECT * FROM (
    SELECT *, AVG(total) OVER (PARTITION BY customer_id) AS avg_total
    FROM orders
) sub
WHERE total > avg_total;

Prêt à réussir tes entretiens Data Analytics ?

Entraîne-toi avec nos simulateurs interactifs, fiches express et tests techniques.

Questions Comportementales et Basées sur des Scénarios

Les recruteurs italiens évaluent l'adéquation culturelle et les compétences en communication en plus des capacités techniques.

Question 21 : Décrire une situation où votre analyse a contredit les attentes des parties prenantes

Structure de réponse solide :

  • Situation : ce que les parties prenantes croyaient
  • Analyse : ce que les données montraient réellement
  • Communication : comment les conclusions ont été présentées diplomatiquement
  • Résultat : quelle décision a été prise et son impact

Comportements clés que les recruteurs recherchent : honnêteté intellectuelle, communication diplomatique, et défense des conclusions basées sur les données.

Question 22 : Comment prioriser plusieurs demandes de données urgentes ?

Réponse attendue :

  • Évaluer l'impact business de chaque demande
  • Clarifier les délais et négocier si possible
  • Identifier les quick wins vs. les analyses approfondies
  • Communiquer des délais réalistes de manière proactive
  • Escalader les contraintes de ressources au management

Question 23 : Comment assurer la qualité des données dans vos analyses ?

Réponse attendue :

  • Valider les données sources avant l'analyse (vérifications des nulls, des plages, de l'intégrité référentielle)
  • Documenter les hypothèses explicitement
  • Croiser plusieurs sources de données
  • Implémenter des vérifications automatisées de la qualité des données
  • Examiner manuellement les outliers avant de les exclure

Question 24 : Décrire votre approche pour apprendre un nouvel outil ou une nouvelle technologie

Réponse attendue :

  • Commencer par la documentation officielle et les tutoriels
  • Construire un petit projet pour appliquer les concepts
  • Rejoindre des communautés (Reddit, Stack Overflow, meetups locaux)
  • Enseigner aux autres pour consolider la compréhension

Questions Spécifiques à l'Industrie pour le Marché Italien

Question 25 : Quelles réglementations affectent l'analytics des données en Italie ?

Réponse attendue : Le RGPD est la réglementation principale. Exigences clés :

  • Consentement explicite pour le traitement des données personnelles
  • Droit à l'effacement (demandes de suppression des données)
  • Minimisation des données (collecter uniquement les données nécessaires)
  • Évaluations d'impact sur la vie privée pour les traitements à haut risque

Spécifique au secteur : Banque italienne (réglementations de la Banque d'Italie), santé (équivalent italien HIPAA), secteur public (CAD et directives AGID).

Question 26 : Comment gérer les données personnelles identifiables (PII) dans les jeux de données analytiques ?

Réponse attendue :

  • Pseudonymisation : remplacer les identifiants par des tokens
  • Agrégation : rapporter au niveau du groupe, pas individuel
  • Masquage des données : cacher les portions sensibles (email : a***@gmail.com)
  • Contrôles d'accès : permissions basées sur les rôles pour les données sensibles
  • Politiques de rétention : supprimer les données quand elles ne sont plus nécessaires

Question 27 : Quelle expérience avez-vous avec les plateformes de données cloud ?

Les entreprises italiennes utilisent de plus en plus les plateformes cloud. Courantes sur le marché :

  • Google BigQuery (Google Cloud)
  • Amazon Redshift (AWS)
  • Azure Synapse (intégration écosystème Microsoft)
  • Snowflake (cloud-agnostique)

Question 28 : Comment communiquer des conclusions analytiques aux dirigeants ?

Réponse attendue :

  • Commencer par la recommandation, pas la méthodologie
  • Utiliser des visualisations que les dirigeants peuvent interpréter en quelques secondes
  • Quantifier l'impact business (revenus, coûts, risques)
  • Anticiper les questions et préparer des slides de backup
  • Éviter le jargon ; traduire les termes techniques

Question 29 : Quelles métriques suivre pour une entreprise e-commerce ?

Réponse attendue :

  • Acquisition : sources de trafic, coût par acquisition
  • Comportement : taux de rebond, pages par session, temps sur site
  • Conversion : taux de conversion par étape du funnel, abandon de panier
  • Rétention : taux de réachat, valeur vie client
  • Revenus : panier moyen, revenu par visiteur

Question 30 : Comment rester à jour sur les tendances en data analytics ?

Réponse attendue :

  • Suivre les publications du secteur : Towards Data Science, Analytics Vidhya
  • Participer aux compétitions Kaggle
  • Assister aux conférences : PyData, meetups data science locaux à Milan ou Rome
  • Lire la documentation des nouvelles versions d'outils
  • Expérimenter avec les nouvelles technologies sur des projets personnels

Stratégie de Préparation pour les Entretiens Data Analyst en Italie 2026

  • Maîtrise SQL : S'entraîner sur les problèmes LeetCode Database et StrataScratch. Les entreprises italiennes testent fortement les JOIN, les window functions et les CTE
  • Maîtrise Python : Compléter les exercices pandas sur Kaggle. Se concentrer sur le nettoyage de données et l'agrégation
  • Familiarité avec les outils : Les compétences Power BI sont très valorisées dans les entreprises italiennes. Tableau est courant dans les multinationales
  • Contexte business : Préparer des exemples de travaux précédents qui démontrent la traduction de questions business en approches analytiques
  • Langue italienne : Bien que de nombreuses entreprises tech opèrent en anglais, la maîtrise de l'italien améliore les opportunités dans les industries traditionnelles (banque, industrie, services publics)

Passe à la pratique !

Teste tes connaissances avec nos simulateurs d'entretien et tests techniques.

Défi du jour

Tu saurais repérer le bug en Data Analytics ?

Un vrai bout de code, un bug caché, une tentative par jour. Sans compte pour essayer.

Anthony Fillion-Maillet

Écrit par

Anthony Fillion-Maillet

Fondateur de SharpSkill

Développeur fullstack depuis plus de 10 ans. Il dirige SharpSkill et répond de tout ce qui y est publié.

Mis à jour le 26 août 2026

Partager

Articles similaires