SQL Interview Questions & Practice
SQL Interview Questions & Practice is a hands-on, bite-sized series designed to help you crack real SQL interview questions with clarity and confidence.
sqlsql interview questionssql window functions
Course Topics
Find the 4th Highest Salary
Table Setup
1CREATE TABLE Employee (
2 id INT,
3 name VARCHAR(50),
4 salary INT
5);
6
7INSERT INTO Employee VALUES
8(1, 'A', 90000),
9(2, 'B', 80000),
10(3, 'C', 80000),
11(4, 'D', 70000),
12(5, 'E', 60000),
13(6, 'F', 50000);Find Products That Were Never Ordered
Table Setup
1CREATE TABLE Products (
2 product_id INT,
3 product_name VARCHAR(50)
4);
5
6CREATE TABLE Orders (
7 order_id INT,
8 product_id INT
9);
10
11INSERT INTO Products VALUES
12(1, 'Laptop'),
13(2, 'Mobile'),
14(3, 'Tablet'),
15(4, 'Watch');
16
17INSERT INTO Orders VALUES
18(101, 1),
19(102, 2),
20(103, 1);Employee Name with Manager Name
Table Setup
1CREATE TABLE Employees (
2 employee_id INT,
3 employee_name VARCHAR(50),
4 manager_id INT
5);
6
7INSERT INTO Employees VALUES
8(1, 'Rahul', NULL),
9(2, 'Amit', 1),
10(3, 'Neha', 1),
11(4, 'Priya', 2),
12(5, 'Karan', 2);Delete Duplicate Emails (Keep One)
Table Setup
1CREATE TABLE Users (
2 user_id INT,
3 name VARCHAR(50),
4 email VARCHAR(100)
5);
6
7INSERT INTO Users VALUES
8(1, 'Rahul', 'rahul@gmail.com'),
9(2, 'Amit', 'amit@gmail.com'),
10(3, 'Neha', 'rahul@gmail.com'),
11(4, 'Priya', 'priya@gmail.com'),
12(5, 'Karan', 'amit@gmail.com');Rank Employees Within Each Department
Table Setup
1CREATE TABLE Employees (
2 employee_id INT,
3 employee_name VARCHAR(50),
4 department VARCHAR(50),
5 salary INT
6);
7
8INSERT INTO Employees VALUES
9(1, 'Rahul', 'IT', 90000),
10(2, 'Amit', 'IT', 80000),
11(3, 'Neha', 'IT', 80000),
12(4, 'Priya', 'HR', 70000),
13(5, 'Karan', 'HR', 60000),
14(6, 'Meena', 'HR', 60000),
15(7, 'John', 'Sales', 75000),
16(8, 'Sara', 'Sales', 50000);Find Customers Who Never Placed an Order
Table Setup
1CREATE TABLE Customers (
2 customer_id INT,
3 customer_name VARCHAR(50)
4);
5
6CREATE TABLE Orders (
7 order_id INT,
8 customer_id INT
9);
10
11INSERT INTO Customers VALUES
12(1, 'Rahul'),
13(2, 'Amit'),
14(3, 'Neha'),
15(4, 'Priya'),
16(5, 'Karan');
17
18INSERT INTO Orders VALUES
19(101, 1),
20(102, 2),
21(103, 1);Current Amount + Previous Amount
Table Setup
1CREATE TABLE Transactions (
2 id INT,
3 transaction_date DATE,
4 amount INT
5);
6
7INSERT INTO Transactions VALUES
8(1, '2024-01-01', 100),
9(2, '2024-01-02', 200),
10(3, '2024-01-03', 150),
11(4, '2024-01-04', 300),
12(5, '2024-01-05', 250);Days with Higher Temperature Than Previous Day
Table Setup
1CREATE TABLE Weather (
2 id INT,
3 record_date DATE,
4 temperature INT
5);
6
7INSERT INTO Weather VALUES
8(1, '2024-01-01', 20),
9(2, '2024-01-02', 25),
10(3, '2024-01-03', 23),
11(4, '2024-01-04', 28),
12(5, '2024-01-05', 26);Top-Selling Product Each Month
Table Setup
1CREATE TABLE Sales (
2 order_id INT,
3 product_id INT,
4 order_date DATE,
5 quantity INT
6);
7
8INSERT INTO Sales VALUES
9(1, 101, '2024-01-05', 10),
10(2, 102, '2024-01-10', 20),
11(3, 101, '2024-01-15', 15),
12(4, 103, '2024-02-02', 30),
13(5, 101, '2024-02-10', 25),
14(6, 103, '2024-02-15', 10),
15(7, 102, '2024-02-20', 40);Employees Earning More Than Their Manager
Table Setup
1CREATE TABLE Employees (
2 employee_id INT,
3 employee_name VARCHAR(50),
4 manager_id INT,
5 salary INT
6);
7
8INSERT INTO Employees VALUES
9(1, 'Rahul', NULL, 90000),
10(2, 'Amit', 1, 80000),
11(3, 'Neha', 1, 95000),
12(4, 'Priya', 2, 70000),
13(5, 'Karan', 2, 85000);Employees Hired in the Last 30 Days
Table Setup
1CREATE TABLE Employees (
2 employee_id INT,
3 employee_name VARCHAR(50),
4 hire_date DATETIME
5);
6
7INSERT INTO Employees VALUES
8(1, 'Rahul', '2026-03-10'),
9(2, 'Amit', '2026-02-25'),
10(3, 'Neha', '2026-01-15'),
11(4, 'Priya', '2026-03-01'),
12(5, 'Karan', '2025-12-20');Find Duplicate Records
Table Setup
1CREATE TABLE Users (
2 user_id INT,
3 name VARCHAR(50),
4 email VARCHAR(100)
5);
6
7INSERT INTO Users VALUES
8(1, 'Rahul', 'rahul@gmail.com'),
9(2, 'Amit', 'amit@gmail.com'),
10(3, 'Neha', 'rahul@gmail.com'),
11(4, 'Priya', 'priya@gmail.com'),
12(5, 'Karan', 'amit@gmail.com');Count NULL Values in a Column
Table Setup
1CREATE TABLE Employees (
2 employee_id INT,
3 employee_name VARCHAR(50),
4 manager_id INT
5);
6
7INSERT INTO Employees VALUES
8(1, 'Rahul', NULL),
9(2, 'Amit', 1),
10(3, 'Neha', 1),
11(4, 'Priya', NULL),
12(5, 'Karan', 2);Find Departments with No Employees
Table Setup
1CREATE TABLE Departments (
2 department_id INT,
3 department_name VARCHAR(50)
4);
5
6CREATE TABLE Employees (
7 employee_id INT,
8 employee_name VARCHAR(50),
9 department_id INT
10);
11
12INSERT INTO Departments VALUES
13(1, 'HR'),
14(2, 'IT'),
15(3, 'Finance'),
16(4, 'Marketing');
17
18INSERT INTO Employees VALUES
19(1, 'Rahul', 1),
20(2, 'Amit', 2),
21(3, 'Neha', 2),
22(4, 'Priya', 1);