Data Analyst Interview Questions

Review this list of 120 data analyst interview questions and answers verified by hiring managers and candidates.
  • +9

    " select user_id, b.marketing_channel from user_sessions a Left join attribution b on b.sessionid = a.sessionid group by 1,2 HAVING sum(purchasevalue)>100 and min(adclick_timestamp) `"

    G B. - " select user_id, b.marketing_channel from user_sessions a Left join attribution b on b.sessionid = a.sessionid group by 1,2 HAVING sum(purchasevalue)>100 and min(adclick_timestamp) `"See full answer

    Data Analyst
    Coding
    +3 more
  • Anthropic logoAsked at Anthropic 

    "To model ROI for a product launch, the first step is to define the timeline you're targeting Example 6 months post-launch, 1 year, or even 5 years. Tip: Start with a 1-year ROI projection to estimate near-term returns, and build a 3-year projection to evaluate growth and scalability. ROI is essentially the net return over that period: Profit=Revenue (within timeline)−Total Cost (from project start) Total Cost includes both fixed and variable costs incurred since t"

    Himanshu G. - "To model ROI for a product launch, the first step is to define the timeline you're targeting Example 6 months post-launch, 1 year, or even 5 years. Tip: Start with a 1-year ROI projection to estimate near-term returns, and build a 3-year projection to evaluate growth and scalability. ROI is essentially the net return over that period: Profit=Revenue (within timeline)−Total Cost (from project start) Total Cost includes both fixed and variable costs incurred since t"See full answer

    Data Analyst
    Data Analysis
    +3 more
  • +1

    "Firstly, I would like to be in a room with all the stakeholders (tech/business) and the decision makers. Now starts the analysis of the situation. Certain questions that I will be looking for an answer are- Is this a new issue? or an old one? What is the severity and priority of the feature in the release? In terms of business values. How long would it take the engineering team to fix the issue? Can we manage for a workaround meanwhile the issue gets fixed? What are the risks inv"

    Shreya S. - "Firstly, I would like to be in a room with all the stakeholders (tech/business) and the decision makers. Now starts the analysis of the situation. Certain questions that I will be looking for an answer are- Is this a new issue? or an old one? What is the severity and priority of the feature in the release? In terms of business values. How long would it take the engineering team to fix the issue? Can we manage for a workaround meanwhile the issue gets fixed? What are the risks inv"See full answer

    Data Analyst
    Analytical
    +2 more
  • +9

    " with youngsuccrate as( select strftime('%m', postdate) AS postmonth, round(sum(issuccessfulpost)*1.0/count(issuccessfulpost),2)as yascrate from post where userid in (select userid from post_user where age between 0 and 18) group by post_month ), nonyoungsucc_rate as( select strftime('%m', postdate) AS postmonth, round(sum(issuccessfulpost)*1.0/count(issuccessfulpost),2)as nonyasc_rate from post where user_id in (select"

    Bhavna S. - " with youngsuccrate as( select strftime('%m', postdate) AS postmonth, round(sum(issuccessfulpost)*1.0/count(issuccessfulpost),2)as yascrate from post where userid in (select userid from post_user where age between 0 and 18) group by post_month ), nonyoungsucc_rate as( select strftime('%m', postdate) AS postmonth, round(sum(issuccessfulpost)*1.0/count(issuccessfulpost),2)as nonyasc_rate from post where user_id in (select"See full answer

    Data Analyst
    Coding
    +3 more
  • Data Analyst
    Data Analysis
    +3 more
  • 🧠 Want an expert answer to a question? Saving questions lets us know what content to make next.

  • HelloFresh logoAsked at HelloFresh 

    "Something not mentioned in my resume is my hobbies. I have a strong interest in analyzing situations, which I enjoy as a mental exercise. I'm also skilled at painting and have a passion for reading books, which helps me broaden my perspective."

    Manaswini D. - "Something not mentioned in my resume is my hobbies. I have a strong interest in analyzing situations, which I enjoy as a mental exercise. I'm also skilled at painting and have a passion for reading books, which helps me broaden my perspective."See full answer

    Data Analyst
    Behavioral
  • Data Analyst
    Coding
    +3 more
  • "BETWEEN and HAVING clauses in SQL serve different purposes: 1. BETWEEN Clause Used to filter rows based on a range of values. Works with numeric, date, or text values. Can be used with WHERE or HAVING clauses. The range includes both lower and upper bounds. Example: Filtering employees with salaries between 30,000 and 50,000 `SELECT * FROM Employees WHERE salary BETWEEN 30000 AND 50000;` 2. HAVING Clause Used to filter **groups"

    Meenakshi D. - "BETWEEN and HAVING clauses in SQL serve different purposes: 1. BETWEEN Clause Used to filter rows based on a range of values. Works with numeric, date, or text values. Can be used with WHERE or HAVING clauses. The range includes both lower and upper bounds. Example: Filtering employees with salaries between 30,000 and 50,000 `SELECT * FROM Employees WHERE salary BETWEEN 30000 AND 50000;` 2. HAVING Clause Used to filter **groups"See full answer

    Data Analyst
    Concept
    +4 more
  • Amazon logoAsked at Amazon 

    "We want sales to grow, in order to have a growth in revenue. And customer usage as well as it allows to see if our product lead more engagement from our users. So to be able to see this overall evolution I would make a line chart for both : Sales : with month on x-axis and sales revenue on y-axis Customer Usage : with month on x-axis and a KPI allowing to measure customer usage (nblogins or nbsessions or nbgamesplayed, ... depending on the industry) on y-axis Moreover, after knowing th"

    Catherine T. - "We want sales to grow, in order to have a growth in revenue. And customer usage as well as it allows to see if our product lead more engagement from our users. So to be able to see this overall evolution I would make a line chart for both : Sales : with month on x-axis and sales revenue on y-axis Customer Usage : with month on x-axis and a KPI allowing to measure customer usage (nblogins or nbsessions or nbgamesplayed, ... depending on the industry) on y-axis Moreover, after knowing th"See full answer

    Data Analyst
    Data Analysis
    +2 more
  • Amazon logoAsked at Amazon 

    "SQL databases are relational, NoSQL databases are non-relational. SQL databases use structured query language and have a predefined schema. NoSQL databases have dynamic schemas for unstructured data. SQL databases are vertically scalable, while NoSQL databases are horizontally scalable."

    Ali H. - "SQL databases are relational, NoSQL databases are non-relational. SQL databases use structured query language and have a predefined schema. NoSQL databases have dynamic schemas for unstructured data. SQL databases are vertically scalable, while NoSQL databases are horizontally scalable."See full answer

    Data Analyst
    Concept
    +7 more
  • +3

    "-- Write your query here select u.userid as userid, IFNULL(sum(purchase_value), 0) AS LTV FROM user_sessions u JOIN attribution a ON u.sessionid = a.sessionid group by user_id order by LTV desc ; Needs a full join. Wondering why cant we do a left outer join here. All the sessions should have complete data."

    Aneesha K. - "-- Write your query here select u.userid as userid, IFNULL(sum(purchase_value), 0) AS LTV FROM user_sessions u JOIN attribution a ON u.sessionid = a.sessionid group by user_id order by LTV desc ; Needs a full join. Wondering why cant we do a left outer join here. All the sessions should have complete data."See full answer

    Data Analyst
    Coding
    +3 more
  • +6

    "Hi, my solution gives the exact numerical values as the proposed solution, but it doesn't pass the tests. Am I missing something, or is this a bug? def findrevenueby_city(transactions: pd.DataFrame, users: pd.DataFrame, exchange_rate: pd.DataFrame) -> pd.DataFrame: gets user city for each user id userids = users[['id', 'usercity']] and merge on transactions transactions = transactions.merge(user_ids, how='left"

    Gabriel P. - "Hi, my solution gives the exact numerical values as the proposed solution, but it doesn't pass the tests. Am I missing something, or is this a bug? def findrevenueby_city(transactions: pd.DataFrame, users: pd.DataFrame, exchange_rate: pd.DataFrame) -> pd.DataFrame: gets user city for each user id userids = users[['id', 'usercity']] and merge on transactions transactions = transactions.merge(user_ids, how='left"See full answer

    Data Analyst
    Coding
    +1 more
  • Microsoft logoAsked at Microsoft 

    "SQL is structured query language."

    Rafia M. - "SQL is structured query language."See full answer

    Data Analyst
    SQL
    +2 more
  • Data Analyst
    Analytical
    +1 more
  • Google logoAsked at Google 

    "Clarification questions What is the purpose of connecting the DB? Do we expect high-volumes of traffic to hit the DB Do we have scalability or reliability concerns? Format Code -> DB Code -> Cache -> DB API -> Cache -> DB - APIs are built for a purpose and have a specified protocol (GET, POST, DELETE) to speak to the DB. APIs can also use a contract to retrieve information from a DB much faster than code. Load balanced APIs -> Cache -> DB **Aut"

    Aaron W. - "Clarification questions What is the purpose of connecting the DB? Do we expect high-volumes of traffic to hit the DB Do we have scalability or reliability concerns? Format Code -> DB Code -> Cache -> DB API -> Cache -> DB - APIs are built for a purpose and have a specified protocol (GET, POST, DELETE) to speak to the DB. APIs can also use a contract to retrieve information from a DB much faster than code. Load balanced APIs -> Cache -> DB **Aut"See full answer

    Data Analyst
    Concept
    +5 more
  • Data Analyst
    Data Analysis
    +2 more
  • +4

    "SELECT upsellcampaignid, COUNT(DISTINCT trans.userid) AS eligibleusers FROM campaign JOIN "transaction" AS trans ON transactiondate BETWEEN datestart AND date_end JOIN user ON trans.userid = user.userid WHERE iseligibleforupsellcampaign = 1 GROUP BY upsellcampaignid `"

    Alina G. - "SELECT upsellcampaignid, COUNT(DISTINCT trans.userid) AS eligibleusers FROM campaign JOIN "transaction" AS trans ON transactiondate BETWEEN datestart AND date_end JOIN user ON trans.userid = user.userid WHERE iseligibleforupsellcampaign = 1 GROUP BY upsellcampaignid `"See full answer

    Data Analyst
    Coding
    +3 more
  • "We want to use rigorous framework for evaluating shipping a new feature — ideally an A/B test. If an A/B test is not available, we first evaluate quantitative data; we look at feature adoption metrics, time-to-use, retention and frequency of visitation. What does the business impact of the feature on conversion rates, revenue per users and LTV, and secondarily evaluate any error rates that could be occurring after the launch of the new feature. It’s important for this analysis to perform segmen"

    Katherine B. - "We want to use rigorous framework for evaluating shipping a new feature — ideally an A/B test. If an A/B test is not available, we first evaluate quantitative data; we look at feature adoption metrics, time-to-use, retention and frequency of visitation. What does the business impact of the feature on conversion rates, revenue per users and LTV, and secondarily evaluate any error rates that could be occurring after the launch of the new feature. It’s important for this analysis to perform segmen"See full answer

    Data Analyst
    Data Analysis
    +2 more
  • +3

    "Schema is wrong - id from product is mapped to id from transactions, id from product should point to product_id in transcations table"

    Arshad P. - "Schema is wrong - id from product is mapped to id from transactions, id from product should point to product_id in transcations table"See full answer

    Data Analyst
    Coding
    +1 more
Showing 41-60 of 120