10 Block SQL Interview Questions (Updated 2024)

At Block Inc (formerly known as Square), SQL is used quite frequently for extracting and analyzing Square payment transactions data, and for managing customer data of CashApp users. Unsurprisingly this is why Block almost always asks SQL coding questions in interviews for Data Analytics, Data Science, and Data Engineering jobs.

So, to help you prepare for the Block SQL interview, we've curated 10 Block Inc. SQL interview questions – able to answer them all?

10 Block Inc. SQL Interview Questions

SQL Question 1: Calculate Monthly Average Ratings for Products

Block, an e-commerce company needs to understand how its products are performing on a monthly basis in terms of customer reviews. Given a table of product reviews, write a SQL query to calculate the monthly average rating of each product. The table of reviews contains the following fields:

  • : Unique identifier of the review
  • : ID of the user who submitted the review
  • : Date when the review was submitted
  • : ID of the product being reviewed
  • : Star rating given to a product, from 1 to 5

Please use this dataset as a reference:

Example Input:
617112306/08/2022 00:00:00500014
780226506/10/2022 00:00:00698524
529336206/18/2022 00:00:00500013
635219207/26/2022 00:00:00698523
451798107/05/2022 00:00:00698522

You can assume there is no missing or incorrect data in the table.


The given query calculates the average rating of each product per month. The window function AVG() is used with the PARTITION BY clause that separates data into partitions based on product_id and the month of the submit_date. It ensures that a separate average is calculated for each combination of product and month. Final results are then ordered by month and product_id.

p.s. Window functions show up super frequently during SQL interviews, so practice the 27+ window function questions on DataLemur

SQL Interview Questions on DataLemur

SQL Question 2: Designing Database for Block Company

Block is a company that rents out blocks (or spaces) for events and office purposes. Suppose they have three types of blocks: individual, meeting, and event blocks. The space could be rented out for an hour, a day, or a week.

As a Database designer, create at least three tables to store relevant information like the different types of spaces, their cost, who has rented them, how long the space was rented, and if there are any reservations.

For the purpose of this task, consider only successful transactions (i.e., block rented successfully).

Here are some sample tables:

1John Doe
2Jane Doe
3Bob Smith
1122 hours2022-06-10
2231 day2022-07-18
3315 hours2022-08-15

Write a PostgreSQL query to find out the total earnings for each type of block for a specific period.


This query joins the and tables on the and filters rentals within the specified date range. It then groups the results by and sums up the earnings for each type of block by multiplying the cost per hour by the rental length in hours.

SQL Question 3: What are some different ways you can identify duplicate rows in a table?

"One creative way is to use the window function ROW_NUMBER() and partition by whichver columns you are loooking for duplicates in. If any row has a row_number() more than 1, then it's a duplicate!

You could also use COUNT(DISTINCT col1) vs. COUNT(*) and see if they return different numbers, indicating the prescence of duplicates!

Block Inc. SQL Interview Questions

SQL Question 4: Filter Customers Records

A company named "Block" wants to analyze the customer purchases on their platform. They have a customer purchase records database, structured as follows:

Example Input:
1001John Doejohndoe@gmail.com2020-01-10200.00
1002Sarah Smithsarahsmith@gmail.com2021-07-15150.50
1003Emily Johnsonemilyjohnson@gmail.com2020-05-12300.75
1004Tom Browntombrown@gmail.com2021-11-1350.00
1005Olivia Tayloroliviataylor@gmail.com2020-02-25170.00

Your task is to write an SQL query that filters down the database to only retrieve customer records who signed up after January 2021 and have made total purchases of over $150. The results should be ordered by in descending order.


The above PostgreSQL query checks for customers who have both after January 2021 and their is above 150. The clause is used to order the data in descending order of their . This query will help Block to filter the data they need to analyze the customer purchases.

SQL Question 5: Can you explain what SQL constraints are, and why they are useful?

In a database, constraints are rules that the DBMS (database management system) follows when performing operations such as inserting, updating, or deleting data.

For example, consider a table of employee records at Block. Some constraints that you might want to implement include:

  • NOT NULL: This constraint ensures that certain columns, such as the employee's first and last name, cannot be NULL.
  • UNIQUE: This constraint ensures that each employee has a unique employee ID.
  • PRIMARY KEY: This constraint combines the NOT NULL and UNIQUE constraints to create a primary key for the employee table. The primary key is a column or set of columns that uniquely identifies each row in the table.
  • FOREIGN KEY: This constraint establishes a relationship between the employee table and other tables in the database. For example, you could use a foreign key to link the employee ID to the department ID in a department table to track which department each employee belongs to.
  • DEFAULT: This constraint specifies a default value for a column in case no value is specified when a new row is inserted into the table.

SQL Question 6: Click Through Rate

Block, a tech company, wants to analyze the click through rates of their ad campaigns. They also want to evaluate the conversion rate from viewing an online tutorial for one of their products to purchasing it.

They are interested in the following:

  • The effective click through rate (CTR), which is defined as the number of clicks received on an ad divided by the number of times the ad is shown.
  • The conversion rate (CR), which is defined as the number of people who viewed the online tutorial and then bought the product divided by the number of people who only viewed the tutorial.

'ad_impressions' table:


'ad_clicks' table:


'tutorial_views' table:


'purchases' table:



The first query will calculate the CTR for each ad:

The second query will calculate the CR for each tutorial:

These queries join the respective tables on and or ensuring we look at the right interactions. It calculates the rate by dividing the count of unique clicks or purchases by the count of unique impressions or views. The outer join makes sure we consider all impressions and views, not only those that led to a click or purchase.

To practice another question about calculating rates, solve this SQL interview question from TikTok on DataLemur's online SQL code editor: Signup Activation Rate SQL Question

SQL Question 7: Can you describe the difference between a clustered and a non-clustered index?

Here's an example of a clustered index on the column of a table of Block payments table:

This creates a clustered index on the column, which will determine the physical order of the data rows in the table.

Here is an example of a non-clustered index on the column of the same table:

This will create a non-clustered index on the column, which will not affect the physical order of the data rows in the table.

In terms of query performance, a clustered index is usually faster for searches that return a large number of records, while a non-clustered index is faster for searches that return a small number of records. However, updates to a clustered index are slower, as they require the data rows to be physically rearranged, while updates to a non-clustered index are faster, as they only require the index data structure to be updated.

SQL Question 8: Total Transaction Amount Per Customer

For the company Block, let's assume it sells blocks of different materials and sizes. Each customer can make several purchases over time. Can you write an SQL query that groups all transactions by customer and calculates the total amount spent per customer?

Example Input:

879528702/11/2022 00:00:00923530.50
789246502/14/2022 00:00:00647845.95
576828703/05/2022 00:00:00923530.50
634511103/30/2022 00:00:00647845.95
542346504/04/2022 00:00:00923530.50

Example Output:



This query groups all the records in the table by . For each group, it calculates the sum of the column, which represents the total amount each customer has spent on purchases. The results are displayed as the for each customer.

SQL Question 9: Find Customer Records with Certain Text Pattern

You are given a table named that contains customer records for the company 'Block'. The table has the following columns: , , , and .

You are required to find all customer records whose contains the string 'Avenue'.

Write a PostgreSQL query for this problem.

Example Input:
1JohnDoe123 Main Street
2JaneSmith456 North Avenue
3BobJohnson789 South Avenue
4AliceWilliams202 East Street
5CharlieMiller345 West Avenue
Example Output:
2JaneSmith456 North Avenue
3BobJohnson789 South Avenue
5CharlieMiller345 West Avenue


This SQL query uses the LIKE keyword to filter the table and return all rows where the column contains the string 'Avenue'. The '%' symbol is a wildcard that matches any sequence of characters. Therefore, '%Avenue%' will match any addresses that contain 'Avenue' anywhere in the string. The result of this query is a table of all customers who live on an avenue.

SQL Question 10: What's the difference between an inner and a full outer join?

An inner join only includes rows from both tables that satisfy the join condition, whereas a full outer join includes all rows from both tables, regardless of whether they match the join condition or not.

For example, suppose you had a table of Block orders and Block customers.

INNER JOIN: When there is a match in the shared key or keys, rows from both tables are retrieved. In this example, an between the Orders and Customers tables would retrieve rows where the in the Orders table matches the in the Customers table.

FULL OUTER JOIN: A 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.

Preparing For The Block SQL Interview

The best way to prepare for a Block SQL interview is to practice, practice, practice. In addition to solving the earlier Block SQL interview questions, you should also solve the 200+ SQL questions on DataLemur which come from companies like Microsoft, Google, and Facebook. DataLemur SQL Interview Questions

Each interview question has multiple hints, step-by-step solutions and best of all, there is an interactive SQL code editor so you can easily right in the browser your SQL query and have it graded.

To prep for the Block SQL interview it is also wise to solve SQL problems from other tech companies like:

But if your SQL foundations are weak, forget about jumping right into solving questions – go learn SQL with this SQL tutorial for Data Scientists & Analysts.

SQL tutorial for Data Scientists & Analysts

This tutorial covers SQL concepts such as filtering on multiple conditions using AND/OR/NOT and sorting results with ORDER BY – both of these come up often during Block SQL assessments.

Block Inc. Data Science Interview Tips

What Do Block Data Science Interviews Cover?

In addition to SQL query questions, the other question categories to practice for the Block Data Science Interview are:

Block Data Scientist

How To Prepare for Block Data Science Interviews?

To prepare for Block Data Science interviews, read their internal CashApp recruiting blog for MLDS interview tips. Also, read the book Ace the Data Science Interview because it's got:

  • 201 interview questions taken from FAANG tech companies
  • a crash course on SQL, AB Testing & ML
  • over 900+ reviews on Amazon & 4.5-star rating

Ace the Data Science Interview Book on Amazon