# Data Analyst Interview Questions Italy 2026: SQL, Python and Analytics > Prepare for data analyst interviews in Italy with 30 essential questions covering SQL, Python, and business analytics. Includes expected answers for 2026 job market. - Published: 2026-08-26 - Updated: 2026-08-26 - Author: Anthony Fillion-Maillet - Tags: data-analytics, sql, python, interview, italy - Reading time: 12 min --- Data analyst interview questions in Italy for 2026 focus heavily on SQL proficiency, Python data manipulation, and the ability to translate business problems into analytical solutions. With over 600 open positions across Milan, Rome, and Bologna, companies like Prometeia, Bending Spoons, and ABB expect candidates to demonstrate both technical depth and business acumen. > **Italian Market Specifics** > > Italian employers prioritize SQL and Power BI skills. Python proficiency with pandas sets candidates apart, especially at tech companies in Milan. Entry-level salaries range from €28,000 to €39,000, with senior roles reaching €80,000+. ## SQL Questions That Appear in Every Data Analyst Interview SQL remains the foundation of data analyst interviews in Italy. Hiring managers at companies like Italgas and Philip Morris test candidates on JOINs, aggregations, and window functions. These questions assess whether a candidate can extract meaningful insights from relational databases. ### Question 1: Explain the difference between INNER JOIN and LEFT JOIN with a practical example **Expected answer:** INNER JOIN returns only rows where matches exist in both tables. LEFT JOIN returns all rows from the left table plus matched rows from the right table, with NULL values where no match exists. ```sql -- orders_analysis.sql -- Find all customers and their orders (including customers with no orders) 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; -- Result: Customers without orders appear with NULL order_id and order_total -- INNER JOIN would exclude those customers entirely ``` Interviewers look for candidates who understand when NULL values appear and can explain the business context for choosing one join type over another. ### Question 2: Write a query to find the second highest salary in a table This question tests knowledge of subqueries, DISTINCT, and limiting results. Multiple valid approaches exist. ```sql -- salary_analysis.sql -- Approach 1: Using subquery with MAX SELECT MAX(salary) AS second_highest FROM employees WHERE salary < (SELECT MAX(salary) FROM employees); -- Approach 2: Using DENSE_RANK window function SELECT salary AS second_highest FROM ( SELECT salary, DENSE_RANK() OVER (ORDER BY salary DESC) AS rank FROM employees ) ranked WHERE rank = 2; ``` The window function approach handles ties correctly. If three employees share the highest salary, DENSE_RANK still returns the actual second-highest value. Using ROW_NUMBER would return different results, which demonstrates understanding of [SQL window functions](/technologies/data-analytics/interview-questions/sql-window-functions). ### Question 3: How do you identify and handle duplicate records? **Expected answer:** Use GROUP BY with HAVING COUNT(*) > 1 to identify duplicates. The approach depends on the business rule: keep the first record, the most recent, or merge information. ```sql -- duplicate_detection.sql -- Find duplicate email addresses SELECT email, COUNT(*) AS occurrence_count FROM users GROUP BY email HAVING COUNT(*) > 1; -- Keep only the earliest record for each email DELETE FROM users WHERE id NOT IN ( SELECT MIN(id) FROM users GROUP BY email ); ``` ### Question 4: Explain CTEs and when to use them instead of subqueries Common Table Expressions improve query readability and allow recursive queries. Italian interviewers often ask candidates to refactor a complex subquery into a CTE. ```sql -- revenue_analysis.sql -- CTE for monthly revenue calculation 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; ``` CTEs are reusable within the same query, unlike subqueries that must be repeated. This matters for complex analytical queries common in data analyst roles. ### Question 5: What is the difference between WHERE and HAVING? **Expected answer:** WHERE filters rows before aggregation; HAVING filters groups after aggregation. WHERE cannot reference aggregate functions; HAVING can. ```sql -- sales_filter.sql -- WHERE filters individual rows SELECT region, SUM(sales) AS total_sales FROM transactions WHERE transaction_date >= '2026-01-01' -- Filter rows first GROUP BY region HAVING SUM(sales) > 100000; -- Then filter aggregated groups ``` ## Python and Pandas Questions for Data Analyst Roles Tech companies in Milan, particularly Bending Spoons and Amazon Italy, expect Python proficiency. These questions assess data manipulation skills with pandas and basic visualization. ### Question 6: How do you handle missing values in a pandas DataFrame? **Expected answer:** The approach depends on the data type and business context. Options include dropping rows, filling with mean/median/mode, forward-filling for time series, or using 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'] }) # Check missing values per column print(df.isnull().sum()) # Fill numeric with median (robust to outliers) df['sales'] = df['sales'].fillna(df['sales'].median()) # Fill categorical with mode df['category'] = df['category'].fillna(df['category'].mode()[0]) # For time series: forward fill df['sales_ffill'] = df['sales'].ffill() ``` Interviewers assess whether candidates understand that blindly dropping rows loses information, and that the filling strategy must align with the analytical goal. ### Question 7: Explain the difference between merge, join, and concat in pandas **Expected answer:** `merge()` combines DataFrames on columns or indexes (SQL-style joins). `join()` is a convenience method for index-based joins. `concat()` stacks DataFrames vertically or horizontally without matching. ```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: SQL-style join on column merged = pd.merge(orders, customers, on='customer_id', how='left') # concat: stack DataFrames df1 = pd.DataFrame({'A': [1, 2]}) df2 = pd.DataFrame({'A': [3, 4]}) stacked = pd.concat([df1, df2], ignore_index=True) ``` ### Question 8: How do you perform a group-by operation with multiple aggregations? ```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] }) # Multiple aggregations with named columns result = df.groupby('region').agg( total_sales=('sales', 'sum'), avg_sales=('sales', 'mean'), total_quantity=('quantity', 'sum'), transaction_count=('sales', 'count') ).reset_index() ``` This syntax (named aggregation) became the standard in pandas 1.0+ and remains current in [pandas 3.0](/blog/data-analytics/pandas-3-new-apis-breaking-changes-interview). Interviewers expect candidates to use it instead of the older dict-based approach. ### Question 9: Write code to calculate month-over-month growth rate ```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] }) # Calculate percentage change df['mom_growth'] = df['revenue'].pct_change() * 100 # Alternative: manual calculation for clarity df['prev_revenue'] = df['revenue'].shift(1) df['growth_manual'] = ((df['revenue'] - df['prev_revenue']) / df['prev_revenue']) * 100 ``` ### Question 10: How do you pivot data 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 for aggregation when duplicates exist agg_pivot = pd.pivot_table(df, values='sales', index='date', columns='region', aggfunc='sum') ``` ## Business Analytics and Problem-Solving Questions Italian companies, especially in finance (Prometeia) and manufacturing (ABB), test analytical thinking beyond pure coding. These questions assess how candidates frame problems and communicate findings. ### Question 11: How would you measure the success of a marketing campaign? **Expected answer:** Define KPIs before the campaign starts. Common metrics include conversion rate, cost per acquisition (CPA), return on ad spend (ROAS), and customer lifetime value (CLV). Compare against a control group or historical baseline. A strong answer includes: - Baseline metrics before campaign launch - Attribution model choice (first-touch, last-touch, multi-touch) - Statistical significance testing for results - Segmentation by channel, audience, or geography ### Question 12: A product manager reports that revenue dropped 15% this month. How do you investigate? **Expected answer:** Decompose the problem systematically: 1. **Verify the data**: Check for data quality issues, missing records, or reporting lag 2. **Segment analysis**: Break down by product, region, customer segment, channel 3. **Isolate the variable**: Determine if volume dropped, price changed, or mix shifted 4. **External factors**: Check seasonality, competitor actions, economic events 5. **Correlate with other metrics**: Website traffic, conversion rate, cart abandonment ### Question 13: Explain A/B testing and when it should not be used **Expected answer:** A/B testing compares two variants (control vs. treatment) to measure causal impact. It requires random assignment, sufficient sample size, and a single metric of interest. A/B testing should not be used when: - Sample size is insufficient for statistical power - The change affects all users (infrastructure, pricing) - Network effects exist (social features where users influence each other) - Ethical concerns prevent withholding a beneficial change ### Question 14: How do you explain statistical significance to a non-technical stakeholder? **Expected answer:** Statistical significance means the observed difference is unlikely to have occurred by random chance. A p-value below 0.05 indicates less than 5% probability that the result happened randomly. Analogy: flipping a coin 10 times and getting 7 heads might be chance. Getting 95 heads out of 100 flips is statistically significant because chance alone cannot explain it. ### Question 15: What is the difference between correlation and causation? **Expected answer:** Correlation measures how two variables move together. Causation means one variable directly influences the other. Ice cream sales and drowning deaths correlate (both increase in summer), but ice cream does not cause drowning. Establishing causation requires: - Temporal precedence (cause precedes effect) - Correlation - Elimination of confounding variables (randomized controlled experiment) ## Technical Skills Assessment Questions These questions test specific tool proficiency expected in the Italian market. ### Question 16: Compare Power BI and Tableau for enterprise analytics Italian companies, particularly in banking and utilities, heavily use Power BI due to Microsoft ecosystem integration. Key differences: | Aspect | Power BI | Tableau | |--------|----------|--------| | Cost | Lower (Office 365 included) | Higher licensing | | Learning curve | Easier for Excel users | Steeper, more powerful | | Data prep | Power Query built-in | Prep requires separate tool | | Visualization | Good, improving | Best-in-class | | Enterprise adoption | Higher in Italy | Common in multinational firms | ### Question 17: What is DAX and provide an example measure **Expected answer:** DAX (Data Analysis Expressions) is Power BI's formula language for calculations. Measures compute values dynamically based on filter context. ``` // Year-over-Year Growth measure 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) ``` ### Question 18: Explain ETL and its importance in analytics **Expected answer:** ETL stands for Extract, Transform, Load. Data moves from source systems (ERP, CRM, web logs) through transformation (cleaning, aggregation, joining) into a data warehouse for analysis. Modern alternatives include ELT (load raw data first, transform in warehouse) and tools like [dbt](/blog/data-analytics/dbt-data-analysts-modeling-testing-interview-2026) that separate transformation logic from orchestration. ### Question 19: What are the differences between OLTP and OLAP systems? | Aspect | OLTP | OLAP | |--------|------|------| | Purpose | Transaction processing | Analytical queries | | Data model | Normalized (3NF) | Denormalized (star/snowflake) | | Query type | Simple, frequent | Complex, aggregated | | Data volume per query | Small | Large | | Examples | Order entry, banking | Data warehouse, BI reports | ### Question 20: How do you optimize a slow SQL query? **Expected answer:** Follow a systematic approach: 1. **Analyze execution plan**: Identify full table scans, missing indexes 2. **Add appropriate indexes**: On columns in WHERE, JOIN, ORDER BY 3. **Rewrite inefficient patterns**: Replace correlated subqueries with JOINs 4. **Limit data early**: Filter before joining large tables 5. **Use query hints sparingly**: Only when optimizer makes poor choices ```sql -- query_optimization.sql -- Before: correlated subquery (slow) SELECT * FROM orders o WHERE o.total > (SELECT AVG(total) FROM orders WHERE customer_id = o.customer_id); -- After: window function (faster) SELECT * FROM ( SELECT *, AVG(total) OVER (PARTITION BY customer_id) AS avg_total FROM orders ) sub WHERE total > avg_total; ``` ## Behavioral and Scenario-Based Questions Italian interviewers assess cultural fit and communication skills alongside technical ability. ### Question 21: Describe a time when your analysis contradicted what stakeholders expected **Strong answer structure:** - Situation: what the stakeholders believed - Analysis: what the data actually showed - Communication: how findings were presented diplomatically - Outcome: what decision was made and its impact Key behaviors interviewers look for: intellectual honesty, diplomatic communication, and standing by data-driven conclusions. ### Question 22: How do you prioritize multiple urgent data requests? **Expected answer:** - Assess business impact of each request - Clarify deadlines and negotiate where possible - Identify quick wins vs. deep analysis - Communicate realistic timelines proactively - Escalate resource constraints to management ### Question 23: How do you ensure data quality in your analyses? **Expected answer:** - Validate source data before analysis (null checks, range checks, referential integrity) - Document assumptions explicitly - Cross-reference multiple data sources - Implement automated data quality checks - Review outliers manually before excluding them ### Question 24: Describe your approach to learning a new tool or technology **Expected answer:** - Start with official documentation and tutorials - Build a small project to apply concepts - Join communities (Reddit, Stack Overflow, local meetups) - Teach others to solidify understanding ## Industry-Specific Questions for Italian Market ### Question 25: What regulations affect data analytics in Italy? **Expected answer:** GDPR is the primary regulation. Key requirements include: - Explicit consent for personal data processing - Right to erasure (data deletion requests) - Data minimization (collect only necessary data) - Privacy impact assessments for high-risk processing Sector-specific: Italian banking (Bank of Italy regulations), healthcare (HIPAA-equivalent Italian laws), public sector (CAD and AGID guidelines). ### Question 26: How do you handle PII in analytical datasets? **Expected answer:** - Pseudonymization: replace identifiers with tokens - Aggregation: report at group level, not individual - Data masking: hide sensitive portions (email: a***@gmail.com) - Access controls: role-based permissions for sensitive data - Retention policies: delete data when no longer needed ### Question 27: What experience do you have with cloud data platforms? Italian companies increasingly use cloud platforms. Common in the market: - [Google BigQuery](/technologies/data-analytics/interview-questions/bigquery-advanced) (Google Cloud) - Amazon Redshift (AWS) - Azure Synapse (Microsoft ecosystem integration) - Snowflake (cloud-agnostic) ### Question 28: How do you communicate analytical findings to executives? **Expected answer:** - Lead with the recommendation, not the methodology - Use visualizations that executives can interpret in seconds - Quantify business impact (revenue, cost, risk) - Anticipate questions and prepare backup slides - Avoid jargon; translate technical terms ### Question 29: What metrics would you track for an e-commerce business? **Expected answer:** - **Acquisition**: traffic sources, cost per acquisition - **Behavior**: bounce rate, pages per session, time on site - **Conversion**: conversion rate by funnel stage, cart abandonment - **Retention**: repeat purchase rate, customer lifetime value - **Revenue**: average order value, revenue per visitor ### Question 30: How do you stay current with data analytics trends? **Expected answer:** - Follow industry publications: Towards Data Science, Analytics Vidhya - Participate in Kaggle competitions - Attend conferences: PyData, local data science meetups in Milan or Rome - Read documentation for new tool releases - Experiment with new technologies on personal projects ## Preparation Strategy for Data Analyst Interviews in Italy 2026 - **SQL mastery**: Practice on [LeetCode Database problems](https://leetcode.com/problemset/database/) and StrataScratch. Italian companies test JOINs, window functions, and CTEs heavily - **Python proficiency**: Complete pandas exercises on [Kaggle](https://www.kaggle.com/learn/pandas). Focus on data cleaning and aggregation - **Tool familiarity**: Power BI skills are highly valued in Italian enterprises. Tableau is common at multinational companies - **Business context**: Prepare examples from previous work that demonstrate translating business questions into analytical approaches - **Italian language**: While many tech companies operate in English, Italian fluency improves opportunities at traditional industries (banking, manufacturing, utilities) --- Source: SharpSkill (https://sharpskill.dev), tech interview preparation for your real stack. HTML version of this page: https://sharpskill.dev/en/blog/data-analytics/data-analyst-interview-questions-italy-2026