9 M3 SQL Interview Questions (Updated 2024)

Updated on

March 1, 2024

At M3, Inc, SQL is used all the damn time for extracting critical patient data from various databases, and analyzing medical research data from the m3 platform. Because of this, M3 LOVES to ask SQL questions in interviews for Data Analyst, Data Science, and BI jobs.

As such, to help you study for the M3 SQL interview, we've curated 9 M3, Inc SQL interview questions – able to answer them all?

9 M3, Inc SQL Interview Questions

SQL Question 1: Identifying Power Users in M3 Company

Company M3 has a database of users who frequently perform purchases and leave reviews. M3 categorizes its power users as those who have purchased and reviewed at least 5 distinct products in the last month. For the purpose of this question, please identify these power users.

Example Input:
112323406/08/2022 00:00:0050001
289023406/10/2022 00:00:0069852
354223406/18/2022 00:00:0050002
455123406/20/2022 00:00:0059686
571223406/22/2022 00:00:0051142
621245606/11/2022 00:00:0053890
654245606/12/2022 00:00:0050104
795278906/30/2022 00:00:0051235
Example Input:
617123406/08/2022 00:00:00500014
780223406/10/2022 00:00:00698524
529323406/18/2022 00:00:00500023
451745607/05/2022 00:00:00698522
756423406/20/2022 00:00:00596864
834523406/22/2022 00:00:00511423


This query works by joining the purchases and reviews tables on the user_id and product_id fields to ensure we only consider products that have been both purchased and reviewed by the same user. It then filters for purchases made in the last month using the date_trunc function to get the first of the last month and comparing it to the purchase_date. The GROUP BY and HAVING clauses are used to find users who have purchased and reviewed at least 5 distinct products.

To practice a related customer analytics question on DataLemur's free online SQL coding environment, try this Microsoft SQL Interview problem: Microsoft SQL Interview Question: Super Cloud Customer

SQL Question 2: Calculate Average Monthly Revenue per Product

For a subscription-based company, M3, we have a dataset of all transactions, including both purchases and refunds. The schema of the table named is as follows:

Example Input:

Write a SQL query to find the average amount of revenue generated per product per month. The revenue from each product is the sum of the field for that product, taking into account both positive values (revenue from purchases) and negative values (refunds).

The output should contain the following columns:

Arrange the output by and in ascending order.

Example Output:


This query uses a window function, specifically , to calculate the average monthly income for each product. The clause is used to form separate groups for each combination of product and month. The function then operates on each of these partitions separately, computing the average within each one. The clause sorts the results first by , then by , both in ascending order.

For more window function practice, try this Uber SQL problem within DataLemur's interactive SQL code editor:

Uber SQL problem

SQL Question 3: How is a foreign key different from a primary key in a database?

A primary key is a column (or set of columns) in a table that uniquely identifies each row in the table. It cannot contain null values and must be unique across all rows in the table.

A foreign key is a column (or set of columns) in a table that references the primary key of another table. It is used to establish a relationship between the two tables. A foreign key can contain null values, and multiple rows in the referencing table can reference the same row in the referenced table.

For example, consider a database with two tables: and . The M3 customers table might have a primary key column called , while the M3 orders table might have a foreign key column called that references the column in the table. This establishes a relationship between the two tables, such that each row in the orders table corresponds to a specific M3 customer.

M3, Inc SQL Interview Questions

SQL Question 4: Filtering customer records for specific conditions

You are a data analyst at M3, an e-commerce company. The company is interested in promoting its repeat customers, users who have made more than one purchase in a specific month. The marketing department has a budget for a promotional campaign for customers who purchased a product more than once in the month of August 2022.

Your task is to generate a report that shows customers who qualify for the promotion. The report should contain customer_id, product_id, and the number of purchases for the products purchased more than once by the customer in August.

Here is the table for your reference.

Example Input:

1234678908/08/2022 00:00:0050001
9876678908/15/2022 00:00:0050001
4567654308/18/2022 00:00:0069852
7645876508/26/2022 00:00:0069852
1726678908/28/2022 00:00:0069852

Your task is to write a PostgreSQL query that generates the desired output.


This query filters the table for records in August 2022, groups them by customer and product, and includes only those groups where the count (the number of purchases) is more than 1. It then returns the , , and (the number of times each product was purchased by each customer in August 2022). The results are ordered by and to make it more readable.

Example Output:


SQL Question 5: How are and similar, and how are they different?

Both window functions are used to find rows at a given offset from the current row. However, will give you the rows AFTER the current row you. On the other hand, will give you the rows BEFORE the current row.

SQL Question 6: Calculating the Average Salaries per Department

M3 is a company with various departments and multiple employees, and they want to determine how they distribute their salaries. They are interested to find out the average salary per department.

Here is how you can model this problem:

Example Input:
Example Input:

We would like to find out the average salary per department. For each department, please provide its name and the average salary of its employees.

Expected Output:


This query joins the employees and departments tables on the department_id field. It then groups the result by department_name and calculates the average (AVG) salary in each group. The result is a list of departments and their corresponding average salaries.

To practice a very similar question try this interactive Amazon Highest-Grossing Items Question which is similar for requiring grouping and aggregate calculations or this Wayfair Y-on-Y Growth Rate Question which is similar for requiring calculations based on different groups.

SQL Question 7: What do primary keys do?

The primary key of a table is a column or set of columns that serves as a unique identifier for each row. It ensures that all rows are distinct and does not allow null values.

For example, say you had stored some Facebook ad campaign data that M3 ran:

The column uniquely identifies each row in the table, and the PRIMARY KEY constraint ensures that no two rows have the same . This helps to maintain the integrity of the data in the table by preventing duplicate rows.

The primary key is also an important part of the table because it allows you to easily identify and reference specific campaigns in your Facebook Ad data. You can use it to join to other tables in the database, such as a table containing data on the results of the campaigns.

SQL Question 8: Calculate the Total Sales and Average Price per Product

Suppose you work at M3, a company that sells various types of mobile phones. Your manager wants to understand more about the sales details of these devices and asks you to answer the following question: "For each individual mobile device sold by M3, can you calculate two figures - the total sales quantity and the average sale price? Please provide this analysis in a ordered result table, with the highest quantity sold at the top."

Here's some mock data for the table:

Example Input:

We want to transform this data into the following output:

Example Output:

Please answer this query using PostgreSQL.


This SQL script will count the total sales quantity for each mobile phone and calculate the average price. The result is returned in order of descending total sales quantity, which means the mobile ID with the most sales quantity will be at the top.

SQL Question 9: Filter Customer Records

Description: You are working as a data analyst at the company, M3. The company has a database table called which contains customer records. The columns in the table represent the customer ID, first name, last name, email and the registered date. In the following question, find all the customer records where the customer's first name starts with the letter 'M' and was registered after '2020-01-01'.

Example Input:
Example Output:


This query uses the LIKE keyword in SQL to filter out customers whose first name starts with 'M'. The 'M%' indicates that we are looking for any records where the first name starts with 'M' and is followed by any sequence of characters. The AND keyword is used to also include the condition that the registered date must be after '2020-01-01'. This query will return all columns from the table for records that meet these criteria.

How To Prepare for the M3 SQL Interview

Assuming that you've already got basic SQL skills, the next best tip we have to prepare for the M3 SQL interview is to solve as many practice SQL interview questions as you can! In addition to solving the earlier M3 SQL interview questions, you should also solve the 200+ SQL Interview Questions on DataLemur which come from companies like FAANG and tech startups. DataLemur SQL Interview Questions

Each exercise has multiple hints, step-by-step solutions and best of all, there's an online SQL coding environment so you can easily right in the browser your query and have it executed.

To prep for the M3 SQL interview you can also be helpful to solve interview questions from other tech companies like:

But if your SQL skills are weak, forget about jumping right into solving questions – refresh your SQL knowledge with this free SQL tutorial.

DataLemur SQL Course

This tutorial covers SQL concepts such as ordering data and CASE/WHEN/ELSE statements – both of these come up frequently in SQL job interviews at M3.

M3, Inc Data Science Interview Tips

What Do M3 Data Science Interviews Cover?

Beyond writing SQL queries, the other topics covered in the M3 Data Science Interview are:

M3 Data Scientist

How To Prepare for M3 Data Science Interviews?

The best way to prepare for M3 Data Science interviews is by reading Ace the Data Science Interview. The book's got:

  • 201 Interview Questions from companies like Google, Tesla, & Goldman Sachs
  • A Refresher on SQL, Product-Sense & ML
  • Great Reviews (900+ 5-star reviews on Amazon)

Ace the Data Science Interview by Nick Singh Kevin Huo