11 FactSet SQL Interview Questions (Updated 2024)

Updated on

February 29, 2024

At FactSet Research, SQL is used across the company for extracting and analyzing financial data from databases, and for optimizing the data pipelines that back FactSet's data solutions. They even support a Managed Database Service so that their customers can query FactSet data without any extra infra costs. Because FactSet loves SQL, they frequently ask SQL interview questions during the technical interview rounds for FactSet Data Analytics, Data Science, and Data Engineering jobs.

So, to help you prepare for the FactSet SQL interview, here’s 11 FactSet SQL interview questions – able to answer them all?

FactSet SQL Logo

11 FactSet Research SQL Interview Questions

SQL Question 1: Identify FactSet's VIP Users

FactSet would like a regular insight on their power users. A power user in FactSet's context is a user who logs into the system and performs important operations like creating complex financial models or dashboards, executing a large number of data queries, or frequently using real-time trade data. They want you to write a SQL query that identifies users who have logged in to the system more than 50 times in the past 30 days.

Given two tables and :

- this table lists all users
102John Doe
235Jane Smith
318Susan Roe
512Joe Bloggs
780Mike Tyson
- this table lists all login activities


The following PostgreSQL query provides the desired output:

This query will retrieve users who have more than 50 login records in the last 30 days from the date of the query execution. It first filters out the login records in the last 30 days, then groups them by user and counts the number of login records for each user. The users with more than 50 login records are the ones returned by the query.

To work on another SQL customer analytics question where you can code right in the browser and have your SQL query instantly graded, try this Walmart Labs SQL Interview Question: Walmart SQL Interview Question

SQL Question 2: Calculate Monthly Average Ratings For Each Product

FactSet is a financial data and software company dealing with different financial products. Suppose we have a table "reviews" which records user feedback on different financial data products each day.

Each row in the "reviews" table has a unique review id, a user id of the user who submitted the review, the date when this review was submitted, the product id of the financial product to which this review belongs, and the stars that this project received in the review (on a scale from 1 to 5), represented as "review_id", "user_id", "submit_date", "product_id", and "stars".

Write a PostgreSQL SQL query to calculate the monthly average ratings for each product.

Example Input:


This query firstly groups the reviews by year, month and product id. The window function AVG is then used to compute the average rating over each window defined by product id and the month of review. The result will show each product's average rating for each month.

For more window function practice, solve this Uber SQL Interview Question on DataLemur's online SQL code editor:

Uber Window Function SQL Interview Question

SQL Question 3: Why might you denormalize a database?

Database denormalization is when you add redundancy to a database, and break typical normalization rules (specified by 1st, 2nd, 3rd normal forms). There's a few reasons to denormalize a database:

  • Improved performance: Denormalization often reduces the the number of costly join operations that are needed to retrieve data. This is helpful when the database is being used for OLAP (Online Analytical Processing) use cases, as joins can be expensive and slow.

  • Simplification: Denormalization can also be used to simplify the design of a database by reducing the number of tables and relationships that need to be managed. This can make it easier to understand and maintain the database.

  • Ease of use: Denormalization can also make it easier for users to work with a database by providing them with a more intuitive and straightforward data model.

While denormalization can be a useful tool for improving performance and scalability, it's important to keep in mind that it can make update and delete operations more complex. This is because denormalization can create data duplicates, which can make it harder to maintain data integrity. So, to avoid any headaches, it's a good idea to start with a well-normalized database design and then consider denormalization only if it's absolutely necessary for your specific performance and scalability needs. In other words, denormalization can be a bit of a wild card, so it's best to handle it with care!

FactSet SQL Interview Questions

SQL Question 4: Revenue and Sales Analysis

FactSet is a company that provides financial information and analytical software for investment professionals. Assume you have two tables, one indicating all sales () and another indicating all products (). The table stores information about each transaction conducted, while the table stores information about each product.

Your task is to produce a query that can provide the total revenue and total units sold for each product for each quarter in 2020.

Example Input:
Example Input:
164Product A
489Product B
586Product C


We can find the quarter with the function in PostgreSQL. To calculate total revenue for each product in each quarter of 2020, we can multiply by .

In this SQL query, we've used the EXTRACT function to find the quarter and year from . Used JOIN to link product information from the table. By using the SUM function, we have calculated the total units sold and total revenue for each product in each quarter of 2020.

SQL Question 5: Can you explain the difference between the and window functions in SQL?

In SQL, both and are used to rank rows within a result set. The key difference between the two functions is how deal with two or more rows having the same value in the ranked column (aka how the break ties).

RANK(): When there's a tie, leaves a gap in the ranking. For example, if three rows are tied for 2nd place, the RANK() function will assign a rank of 2 to the first of these rows, a rank of 3 to the second row, and a rank of 4 to the third row.

DENSE_RANK(): For ties, does not leave a gap in the ranking. Instead, it assigns the same rank to all tied rows, and then makes the next row 1 bigger. Confusing, I know, but here's an example to make it more clear: if three rows are tied for 3rd place, the function will assign a rank of 3 to all three rows, and then assign a rank of 4 to the next row.

SQL Question 6: Filtering Customers based on Subscription and Location

Given a database of FactSet's customers, filter out those customers who have an active subscription and are located in New York or San Francisco.

The table has the following structure:

Example Input:
1234New YorkTrue
5678San FranciscoFalse
9101New YorkFalse
3141San FranciscoTrue

The output should return the and of these consumers.

Example Output:
1234New York
3141San Francisco


This SQL query works by filtering the table based on the conditions within the WHERE clause. The query selects records where the city is either 'New York' or 'San Francisco', and where the subscription_active column has a value of 'True'. As a result, we only get records for customers who are located in either of these two cities and have an active subscription.

SQL Question 7: What does the SQL command do?

is used to combine the results of multiple statements into a single result set.

Suppose you were doing an HR Analytics project for FactSet, and needed to analyze both FactSet's contractors and employees. You could use in the following way:

This statement would return a combined result set of FactSet contractors and employees who were hired after the start of the year 2023.

SQL Question 8: Calculate the average data downloads over time for a FactSet client.

FactSet is a company that specializes in delivering integrated financial information and sophisticated analytical applications for the global investment community. As a data analyst at FactSet, one probably frequently asked question is about the data usage patterns, such as, how much data on average does a client download each month?

For this task, let's assume then that we have a structured downloadable logs table:

Example Input:

The table logs every instance of data downloaded by a client. The table contains the unique of each download instance, identifies the client who performed the download with , logs the download date/time in , and records the volume of data downloaded in MB as .

Using these details, the task is to write a SQL query that calculates the average volume of data downloaded by each client every month.


This query groups the data by client_id and the month-year of the download date, then calculates the average downloaded data volume for each grouping. The and functions are used to separate the year and month from the download date, and these are then concatenated together to form a format for each row. The function is then used to calculate the average download volume for each grouping. Finally, the results are ordered by month-year and client id for easier reading and interpretation.

With this query, you can easily analyze data downloading patterns for each client per month.

To practice a very similar question try this interactive Amazon Server Utilization Time Question which is similar for calculating usage metrics over time.

SQL Question 9: Calculate the Total Sales Revenue Per Product

FactSet is a company that provides financial information and analytic software for investment professionals. Imagine you are a data engineer at FactSet, and you've been tasked to analyze the company's sales data. Given a table, write a SQL query to calculate the total sales revenue of each product.

The table has the following columns: (unique identifier for each sale), (identifier for the product), (the date of the sale), and (the price of the product).

Here's an example of the table:

Example Input:

Your task is to write a SQL query that will return a table showing each and its total sales revenue, which is calculated by summing up the of all sales for each .


Here is the PostgreSQL query to solve the problem:

This query groups rows in the table by and calculates the total revenue for each product by summing up the prices of all sales.

For the given example, the output will be:

Example Output:

SQL Question 10: Can you explain the meaning of database denormalization?

Denormalization is the practice of altering a database schema in a way that breaks the normalization rules (1NF, 2NF, 3NF, etc.).

This is typically done to improve the performance of the database when it is being used for online analytics processing (OLAP), rather than online transaction processing (OLTP) use cases.

Denormalization can improve query performance by reducing the number of expensive joins required to retrieve data, but it comes with it's own drawbacks too. By adding redundant columns, you incur more data storage costs, and there's need for more complex update and delete operations in order to maintain data integrity across all the duplicated data. Thus, it's important to carefully consider the trade-offs involved before implementing denormalization.

SQL Question 11: Analyze Sales and Customers With a Join

Given two tables, and , write a SQL query that joins these tables and displays customer's name, product's name, and its price.

The table includes the customer's ID, name, and contact details. The table includes the sales ID, the customer ID, product's name, and its price.

Sample data:

Example Input:

1John Doejohn.doe@example.com
2Jane Smithjane.smith@example.com
3Mary Johnsonmary.johnson@example.com

Example Input:

1001Product A$200
1012Product B$150
1023Product C$120

The goal of this query is to produce a list of customers along with the products they bought and the price of the products.

Example Output:

John DoeProduct A$200
Jane SmithProduct B$150
Mary JohnsonProduct C$120


In this SQL query, we use the JOIN clause to get all rows from both and tables where the matches. This returns a new result set that contains data from both tables where the condition is true.

Next, we use the SELECT statement to choose the columns we want in our final result set: from the table, and and from the table.

Finally, we use an ORDER BY clause to sort the final result set by customer's name in ascending order.

Because joins come up frequently during SQL interviews, try an interactive SQL join question from Spotify: Spotify JOIN SQL question

Preparing For The FactSet SQL Interview

Assuming that you've already got basic SQL skills, the next best tip we have to prepare for the FactSet SQL interview is to solve as many practice SQL interview questions as you can! In addition to solving the above FactSet SQL interview questions, you should also solve the 200+ SQL questions from real Data Science & Analytics interviews which come from companies like Google, Uber, and Microsoft. DataLemur SQL and Data Science Interview Questions

Each exercise has hints to guide you, full answers and most importantly, there is an online SQL coding environment so you can instantly run your query and have it graded.

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

But if your SQL coding skills are weak, forget about jumping right into solving questions – strengthen your SQL foundations with this SQL tutorial for Data Analytics.

DataLemur SQL Course

This tutorial covers SQL topics like filtering data with WHERE and aggregate functions like SUM()/COUNT()/AVG() – both of which come up often during FactSet SQL assessments.

FactSet Data Science Interview Tips

What Do FactSet Data Science Interviews Cover?

In addition to SQL query questions, the other topics to practice for the FactSet Data Science Interview are:

  • Statistics and Probability Questions
  • Python or R Coding Questions
  • Product Data Science Interview Questions
  • Machine Learning and Predictive Modeling Questions
  • Behavioral Based Interview Questions

FactSet Data Scientist

How To Prepare for FactSet Data Science Interviews?

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

  • 201 Interview Questions from FAANG, tech startups, and Wall Street
  • A Refresher on Product Analytics, SQL & ML
  • Great Reviews (900+ 5-star reviews on Amazon)

Ace the Data Science Interview by Nick Singh Kevin Huo

You shoould also try to explore their datasets.