10 Booking.com SQL Interview Questions (Updated 2024)

Updated on

February 7, 2024

At Booking.com, MySQL is used often for analyzing customer booking trends and optimizing pricing strategies based on regional and seasonal data trends. Because of this, Booking asks SQL problems during interviews for Data Science, Analytics, and & Data Engineering jobs.

So, to help you prepare for a Booking.com SQL Assessment, here’s 10 Booking SQL interview questions to practice – can you solve them?

Booking SQL Interview Questions

10 Booking.com SQL Interview Questions

SQL Question 1: Identify VIP Customers at Booking

As a data analyst at Booking, one of your role is to identify VIP users. These are individuals who make several hotel bookings, particularly for high-end (5-star) properties monthly. The data is stored in two primary tables and as shown below.

Example Input:
90015672018-06-15 00:00:0070001
95028902018-06-25 00:00:0080052
77041232018-07-18 00:00:0080052
69255672018-07-01 00:00:0070001
42892342018-07-05 00:00:0070001
Example Input:

Given these two tables, write a query that returns each user along with the number of high-end hotel bookings they have made within each month. Assume that a high-end hotel has a rank of 5.


In the above query, we join the table with the table on the then filter out all bookings which are not for high-end hotels (). The result is grouped by month and user_id to give the total number of bookings per user each month. The result is then ordered in descending order of number_of_bookings to have the users with the highest number of bookings at the top.

To solve a related customer analytics 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: Analyzing Hotel Review Ratings Over Time

In the context of a booking company like Booking.com, we have received detailed user reviews about hotels over the years. The task is to analyze and calculate the average review score for each hotel per month. This will help to understand the performance trend and quality of each hotel over time.

You are provided with a table with hotel_id, user_id, submit_date and stars (score out of 5) columns. Write a SQL query to return the average monthly review score for each hotel.

Example Input:
Example Output:


This SQL query uses the GROUP BY clause to organize data into groups by month and hotel_id. Then, it uses the AVG() function to calculate the average rating for each group. EXTRACT(MONTH FROM submit_date) is used to get the month part from the date column ‘submit_date’ and 'hotel_id' identifies each individual hotel. Finally, it selects the calculated average rating 'avg_stars' for each hotel and for each month.

To solve a related window function SQL problem on DataLemur's free interactive coding environment, solve this Google SQL Interview Question: Google SQL Interview Question

SQL Question 3: What's a database view, and what's it used for?

Database views are created to provide customized, read-only versions of your data that you can query just like a regular table. So why even use one if they're so similar to a regular table?

Views are advantageous for several reasons:

  • views allow you to create a simpler versions of your data for specific users (such as hiding extraneous columns/rows from business analysts since they're relics of the Data Engineering pipelines setup)
  • views help you comply with data security requirements by hiding sensitive data from certain users (important for regulated industries like govermnet and healthcare!)
  • views can improve performance for complicated queries by pre-computing the results and caching them in a view (which is often faster than re-executing the original query)

SQL Question 4: Design and Query a Hotel Booking Database

Given the business needs of Booking.com, your task is to design a database schema to handle their inventory of hotels, rooms, customers, and bookings. Once you have a design in mind, generate some sample data for testing. Then, to prove the design's utility, please write a PostgreSQL query that returns a list of all hotels booked by a specific user during a specific time period.

Example Input:
1Hotel CaliforniaCalifornia, USA
2The RitzLondon, UK
3RydgesSydney, AU
Example Input:
32Luxury Suite300
Example Input:
1John Doejohndoe@email.com
2Jane Smithjanesmith@email.com
3James Brownjamesbrown@email.com
Example Input:


In this PostgreSQL query, we first join the , , and tables using their respective foreign keys. We then apply a clause to filter the records by the given and the date range. The keyword ensures we don't get duplicate records in our result. The placeholders , , and would be replaced by the actual values during implementation. undefined

SQL Question 5: What distinguishes an inner join from a full outer join?

A full outer join returns all rows from both tables, including any unmatched rows, whereas an inner join only returns rows that match the join condition between the two tables.

For an example of each one, say you had sales data exported from Booking's Salesforce CRM stored in a datawarehouse which had two tables: and .

: retrieves rows from both tables where there is a match in the shared key or keys.

This query will return rows from the sales and tables that have matching customer id values. Only rows with matching values will be included in the results.

: 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.

Here is an example of a SQL full outer join using the sales and tables:

SQL Question 6: Find All Customers who have made a Booking in the past month and Have Given a Review Score above 3 Stars

As part of the Booking team, we want to identify customers who have made a booking in the past month and who have also given a review score of more than 3 stars, for any of their bookings. Write an SQL query to accomplish this, by using a three-table join strategy that includes the , , and tables.

Sample Input:
Sample Input:
Sample Input:


This solution joins the and tables with the table to find all bookings made within the past month () and then filters by review_score (), thus identifying customers who have made a booking in the past month and who have also given a review score of more than 3 stars. The DISTINCT keyword is used to ensure we do not have duplicate customer entries in our result set. undefined

SQL Question 7: In SQL, are blank spaces the same as a NULL?

NULLs are NOT the same as zero or blank spaces in SQL. NULLs are used to represent a missing value or the abscence of a value, whereas zero and blank space are legitimate values.

It's important to handle NULLs carefully, because they can mess up your analysis very easily. For example, if you compare a NULL value using the = operator, the result will always be NULL (because just like Drake, nothing be dared compared to NULL). That's why many data analysis in SQL start with removing NULLs using the function.

SQL Question 8: Calculate the Click-through-Rate (CTR) for Digital Ad Campaigns

Booking.com will often look at click-through rates of their digital ad campaigns to understand the effectiveness of the marketing activities. Given the and tables which track the viewing and clicking activities respectively of users on the digital ads that Booking.com run on various platforms, write a query to calculate the CTR (number of clicks/number of views) for each digital advertisement.

Example Input:

600112106/08/2022 00:00:0050101
650212906/10/2022 00:00:0069235
562313506/18/2022 00:00:0050101
539215707/26/2022 00:00:0069235
457716507/05/2022 00:00:0050101

Example Input:

768912106/08/2022 00:00:0050101
502915506/10/2022 00:00:0069235
364513506/18/2022 00:00:0050101
458717307/26/2022 00:00:0050101
605416507/05/2022 00:00:0050101


This SQL query first joins to to get corresponding lines of viewing and clicking ads. By grouping the result set by , it then calculates the click-through-rate (CTR). The gives us the number of clicks per view, effectively giving us the click-through-rate for each ad. The is to convert the count to a float for a correct division result.

To practice a related SQL problem on DataLemur's free interactive SQL code editor, try this SQL interview question asked by Facebook: Facebook Click-through-rate SQL Question

SQL Question 9: Filter Customer Records with LIKE keyword

As a data analyst at Booking.com, we have a customer records database with different data columns. One of it refers to the UserAgent details. This data helps us in understanding the customers from a technological view, analyzing which platform, device or browser the customers use to access our services.

Your task is to write a SQL query which filters out all customers that used an iPhone. Let's assume the data record in the "user_agent" column for iPhone users contains the string 'iphone'.

Example Input:
101Johnjohn@mail.comMozilla/5.0 (iPhone; CPU iPhone OS 10_3 like Mac OS X)
102Janejane@mail.comMozilla/5.0 (Windows NT 10.0; Win64; x64)
103Tomtom@mail.comMozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X)
104Jerryjerry@mail.comMozilla/5.0 (Windows NT 6.1; Win64; x64)
105Sophiasophia@mail.comMozilla/5.0 (iPhone; CPU iPhone OS 9_3 like Mac OS X)


This query will select all records from the "customers" table where the "user_agent" contains the term "iphone". The '%' symbol is a wildcard in SQL that matches any sequence of characters. Also, the function is used to ensure the query is case insensitive. undefined

SQL Question 10: In the context of database schema design, can you give an example of a one-to-one relationship vs. a one-to-many relationship?

When designing a database schema, a one-to-one relationship between two entities is characterized by each entity being related to a single instance of the other. An example of this is the relationship between a car and a license plate - each car has one license plate, and each license plate belongs to one car.

On the other hand, a one-to-many relationship is when one entity can be associated with multiple instances of the other entity. For example, a person can have multiple email addresses, but each email address only relates back to one person.

Booking SQL Interview Tips

The key to acing a Booking SQL interview is to practice, practice, and then practice some more! Besides solving the above Booking SQL interview questions, you should also solve the 200+ tricky sql questions on DataLemur which come from companies like FAANG and tech startups. DataLemur Questions

Each DataLemur SQL question has multiple hints, detailed solutions and crucially, there's an online SQL code editor so you can right online code up your SQL query and have it checked.

To prep for the Booking SQL interview you can also be wise to practice SQL problems from other tech companies like:

But if your SQL foundations are weak, don't worry about jumping right into solving questions – go learn SQL with this interactive SQL tutorial.

DataLemur SQL Course

This tutorial covers SQL topics like joining a table to itself and sorting results with ORDER BY – both of which come up often during Booking SQL interviews.

Booking Data Science Interview Tips

What Do Booking Data Science Interviews Cover?

For the Booking Data Science Interview, besides SQL questions, the other types of questions to practice:

  • Probability & Statistics Questions
  • Python or R Coding Questions
  • Data Case Study Questions
  • Machine Learning Questions
  • Behavioral Interview Questions

Booking Data Scientist

How To Prepare for Booking Data Science Interviews?

To prepare for Booking Data Science interviews read the book Ace the Data Science Interview because it's got:

  • 201 interview questions taken from Google, Microsoft & tech startups
  • a refresher covering Stats, SQL & ML
  • over 900+ reviews on Amazon & 4.5-star rating

Ace the Data Science Interview Book on Amazon