# 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. - Published: 2026-08-26 - Updated: 2026-08-26 - Author: Anthony Fillion-Maillet - Reading time: 5 min --- 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](/technologies/data-analytics/interview-questions/sql-window-functions). ### 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 ``` ## 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](/blog/data-analytics/pandas-3-new-apis-breaking-changes-interview). 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 : | Aspect | Power BI | Tableau | |--------|----------|--------| | Coût | Plus bas (inclus dans Office 365) | Licence plus élevée | | Courbe d'apprentissage | Plus facile pour les utilisateurs Excel | Plus raide, plus puissant | | Préparation des données | Power Query intégré | Prep nécessite un outil séparé | | Visualisation | Bon, en amélioration | Meilleur de sa catégorie | | Adoption entreprise | Plus élevée en Italie | Courante 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. ``` // 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](/blog/data-analytics/dbt-data-analysts-modeling-testing-interview-2026) qui séparent la logique de transformation de l'orchestration. ### Question 19 : Quelles sont les différences entre les systèmes OLTP et OLAP ? | Aspect | OLTP | OLAP | |--------|------|------| | Objectif | Traitement des transactions | Requêtes analytiques | | Modèle de données | Normalisé (3NF) | Dénormalisé (star/snowflake) | | Type de requête | Simple, fréquent | Complexe, agrégé | | Volume de données par requête | Petit | Grand | | Exemples | Saisie de commandes, banque | Data 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; ``` ## 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](/technologies/data-analytics/interview-questions/bigquery-advanced) (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](https://leetcode.com/problemset/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](https://www.kaggle.com/learn/pandas). 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) --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/fr/blog/data-analytics/data-analyst-interview-questions-italy-2026