9 Braze SQL Interview Questions (Updated 2024)

Updated on

March 2, 2024

At Braze, SQL does the heavy lifting for analyzing user interaction data for client marketing strategies, and for creating customer segements. That's the reason behind why Braze LOVES to ask SQL query questions in interviews for Data Science, Analytics, and & Data Engineering jobs.

Thus, to help you practice for the Braze SQL interview, we've collected 9 Braze SQL interview questions – can you solve them?

9 Braze SQL Interview Questions

SQL Question 1: Identify Power Users for Braze

Braze is a customer engagement platform that helps businesses analyze their user behavior and perform targeted marketing campaigns. In this scenario, suppose Braze considers a user a 'Power User' if they have sent more than 500 emails in the last 30 days. Write a PostgreSQL query to identify these power users from the customer database.

Example Input:
1123Email Sending5002022-08-01 00:00:00
2256Email Sending4502022-08-02 00:00:00
3123Email Sending2502022-08-02 00:00:00
4362Email Sending6002022-08-04 00:00:00
5362Email Sending1502022-08-05 00:00:00


The above query selects users from the table who sent emails in the past 30 days. It groups the result by , and sums up the for each user. The clause then filters out users who have sent more than 500 emails, thus identifying our 'Power Users'.

To practice a super-customer analysis question on DataLemur's free online SQL code editor, try this Microsoft Azure Cloud SQL Interview Question: Microsoft SQL Interview Question: Super Cloud Customer

SQL Question 2: Analyze User Engagement Over Time

As a Data Analyst at Braze, you are tasked to analyze user engagement over time. You are given a table, , where each row represents an individual user event, like a user opening an app. You are asked to write a SQL query to calculate the rolling 7-day count of user events by for each day.

Example Input:

Note: all dates are in the format .

You need to return a table that includes the date, app id, and the rolling 7-day count of user events.

Example Output:


The query employs a window function to calculate the rolling 7-day count of user events for each app_id. The separates the data into partitions based on the app_id. The sorts the rows in each partition by date. The defines the window frame where it starts from the current row and goes back 6 preceding rows (representing a 7 day span).

To practice another window function question on DataLemur's free online SQL coding environment, try this Google SQL Interview Question: Google SQL Interview Question

SQL Question 3: What are the different kinds of joins in SQL?

Joins in SQL allow you to combine data from different tables based on a shared key or set of keys.

Four JOIN types are available in SQL. For an example of each one, say you had sales data exported from Braze's Salesforce CRM stored in a PostgreSQL database, and had access to two tables: and .

  • : retrieves rows from both tables where there is a match in the shared key or keys. For example, an INNER JOIN between the Sales table and the Customers table would retrieve only the rows where the customer_id in the Sales table matches the customer_id in the table.
  • : retrieves all rows from the left table (in this case, the sales table) and any matching rows from the right table (the table). If there is no match in the right table, NULL values will be returned for the right table's columns.
  • : retrieves all rows from the right table (in this case, the customers table) and any matching rows from the left table (the sales table). If there is no match in the left table, NULL values will be returned for the left table's columns.
  • : retrieves all rows from both tables, regardless of whether there is a match in the shared key or keys. If there is no match, NULL values will be returned for the columns of the non-matching table.

Braze SQL Interview Questions

SQL Question 4: Average email open rates for Braze

Braze is a company that specializes in customer engagement, offering an email marketing platform among other features. For this scenario, let's assume you've been asked to calculate average email open rates per campaign for the last month.

Here's some sample data:

Example Input:

101Spring Sale06/01/2022 00:00:00
102Summer Promotion06/15/2022 00:00:00
103Fall Discounts07/01/2022 00:00:00

Example Input:

100110106/08/2022 00:00:0050001500
100210106/10/2022 00:00:0045001250
100310206/18/2022 00:00:0060001800
100410307/02/2022 00:00:0070002100
100510307/05/2022 00:00:0069002050


The query above joins the campaigns and emails tables on campaign_id. It then restricts the set to only emails sent last month. The average open rate is calculated by dividing the number of emails opened () by the number of emails sent () for each campaign, and then taking the average of these rates. Note that is cast as a decimal to avoid integer division, which would truncate the results.

To practice a very similar question try this interactive Facebook App Click-through Rate (CTR) Question which is similar for calculating rates based on user activities or this TikTok Signup Activation Rate Question which is similar for analyzing user engagement from a campaign.

SQL Question 5: In what circumstances might you choose to denormalize a database?

Database normalization is helpful because it improves the performance, flexibility, and scalability of a database. Some specific benefits of normalization include:

  • Reducing Redundancy: Normalization helps to minimize redundancy by breaking down a larger general table into smaller, more specific tables. This can often reduce the amount of data that needs to be accessed for particular queries.

  • Improving Data Integrity: Normalization helps to ensure the integrity of the data by minimizing the risk of data inconsistencies and anomalies. It does this by establishing clear relationships between the tables via primary and foreign keys.

  • Increasing Flexibility: Normalization makes it easier to modify the structure of the database, as there is less redundancy, so it allows you to make changes to one table without affecting others. This makes it easier to adapt the database to changing business needs (and change is basically constant at Braze!)

  • Improving Performance: Normalization can improve the performance of the database by reducing the amount of data that needs to be stored and accessed in a single table. This can result in faster query times and better overall performance.

  • Easier Data Modeling: Normalization can make it easier to model the data in a logical and intuitive way, since less random data is commingled together, which improves the overall database design.

SQL Question 6: Average User Engagement Per Campaign

Braze is a customer engagement platform that powers relevant and memorable experiences between consumers and the brands they love. For this question, consider a scenario where Braze sends out marketing campaigns and monitors user engagement. The task is to find out the average user engagement per campaign over a specific time period.

Example Input:

101Summer Sale06/01/2022 00:00:00
102Back to School07/01/2022 00:00:00
103Winter Sale12/01/2022 00:00:00
2356101125606/10/2022 00:00:0030
3234101512406/12/2022 00:00:0020
9873102985207/22/2022 00:00:0010
3612103126112/05/2022 00:00:0015
5620103902112/10/2022 00:00:0025

Example Output:

Summer Sale25
Back to School10
Winter Sale20


This query joins the and tables based on the . It then groups the data by the . The function is used to calculate the average for each campaign. This allows Braze to understand user engagement per campaign, which can help guide their campaign strategies.

SQL Question 7: How do you identify records in one table that aren't in another?

To find records in one table that aren't in another, you can use a and check for values in the right-side table.

Here is an example using two tables, Braze employees and Braze managers:

This will return all rows from Braze employees where there is no matching row in managers based on the column.

You can also use the operator in PostgreSQL and Microsoft SQL Server to return the records that are in the first table but not in the second. Here is an example:

This will retrieve all rows from employees that do not appear in managers. The operator works by retreivingthe rows that are returned by the first query, but not by the second.

Please note that is not supported by all DBMS systems, such as MySQL and Oracle (however, you can use the operator to achieve a similar outcome).

SQL Question 8: Filter and Match Customer Interactions with Braze

For the following two tables: (containing information about each customer) and (containing customer interaction logs with Braze), identify customers that interacted with any product that contains the word "Braze" in its name, between the dates 1st January 2022 and 31st December 2022.

Example Input:
Example Input:
5000112306/08/2022Braze CRM
6985245606/10/2022Analytics software
5214978906/18/2022Braze Messaging
8326545607/17/2022Email Automation
9671112307/25/2022Braze CRM


This PostgreSQL query uses joins to combine the and tables. It applies a case-insensitive pattern search using the SQL keyword LIKE, and a date range filter, to detect customer interactions with any product that contains the word "Braze" in its name, between the dates 1st January 2022 and 31st December 2022.

SQL Question 9: Calculate Average User Spend Per Order with Rounding

You are provided with two tables: and . The table holds the basic info of each order including and . The table provides the detail information about each order, such as the , , and the the user spent on each product in each order. Your job is to calculate the average total amount that each user spent per order.

The amount should be quantified as the multiplication of the quantity and unit_price, and it should be rounded to 2 decimal places.

The tables are structured as follows:

Example Input:

Example Input:



This query joins the and tables on the . For each , it calculates the total amount the user spent on each order (quantity times unit price) and then takes the average over all orders for that user. The average is rounded to 2 decimal places using the function.

How To Prepare for the Braze SQL Interview

The best way to prepare for a SQL interview, besides making sure you have strong SQL fundamentals, is to practice a ton of real SQL questions that were asked in recent job interviews. In addition to solving the earlier Braze SQL interview questions, you should also solve the 200+ SQL Interview Questions on DataLemur which come from companies like FAANG and tech startups. DataLemur Questions

Each SQL question has multiple hints, full answers and best of all, there is an online SQL coding environment so you can easily right in the browser your query and have it executed.

To prep for the Braze SQL interview it is also helpful to solve SQL questions from other tech companies like:

In case your SQL foundations are weak, don't worry about jumping right into solving questions – improve your SQL foundations with this SQL tutorial for Data Scientists & Analysts.

DataLemur SQL tutorial

This tutorial covers SQL topics like WHERE vs. HAVING and finding NULLs – both of these come up frequently in SQL job interviews at Braze.

Braze Data Science Interview Tips

What Do Braze Data Science Interviews Cover?

Besides SQL interview questions, the other types of problems to prepare for the Braze Data Science Interview are:

Braze Data Scientist

How To Prepare for Braze Data Science Interviews?

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

  • 201 Interview Questions from companies like Microsoft, Google & Amazon
  • A Refresher covering Python, SQL & ML
  • Amazing Reviews (900+ reviews, 4.5-star rating)

Ace the Data Science Interview by Nick Singh Kevin Huo