0 / 40

SQL interview practice that runs on your phone.

40 real interview problems against a live SQLite database that runs entirely in your browser. No laptop, no install, no signup — and your queries never leave your device.

40 problems · 5 tiers
10 free, no signup
Works offline once loaded

Tier 1 · Basics

Tier 2 · Aggregation

Tier 3 · Joins

Tier 4 · Subqueries & CTEs

Tier 5 · Window functions

Unlock all 40 problems

The first 10 are free so you can judge the quality before paying. Pro opens the other 30 — joins, subqueries, CTEs and window functions, which is where interviews are actually decided.

  • 30 more problems, through window functions
  • Worked solution and an explanation for every one
  • One-time payment — no subscription, ever
  • Lifetime access, works offline
$19one time
Your key arrives by email the moment you pay.
Trouble paying, or the currency looks wrong? Email contact@cosmovex.com and we'll send you a working link the same day.
Bought this on another device?
Show the database schema
CREATE TABLE customers (
  id INTEGER PRIMARY KEY, name TEXT, country TEXT, signup_date TEXT
);
CREATE TABLE products (
  id INTEGER PRIMARY KEY, name TEXT, category TEXT, price REAL
);
CREATE TABLE orders (
  id INTEGER PRIMARY KEY, customer_id INTEGER, order_date TEXT, status TEXT
);
CREATE TABLE order_items (
  id INTEGER PRIMARY KEY, order_id INTEGER, product_id INTEGER, quantity INTEGER, unit_price REAL
);
CREATE TABLE employees (
  id INTEGER PRIMARY KEY, name TEXT, department TEXT, salary REAL, manager_id INTEGER, hire_date TEXT
);

INSERT INTO customers VALUES
 (1,'Aditi Rao','India','2025-01-14'),(2,'Ben Okafor','Nigeria','2025-03-02'),
 (3,'Chloe Martin','France','2025-04-21'),(4,'Diego Alvarez','Mexico','2025-06-08'),
 (5,'Elena Petrova','Russia','2025-07-19'),(6,'Farid Hassan','Egypt','2026-01-05'),
 (7,'Grace Lee','Canada','2026-02-11'),(8,'Hiro Tanaka','Japan','2026-03-27'),
 (9,'Amara Singh','India','2026-05-02'),(10,'Ivan Novak','Poland','2026-06-30');

INSERT INTO products VALUES
 (1,'Mechanical Keyboard','Peripherals',89.99),(2,'Wireless Mouse','Peripherals',24.50),
 (3,'27in Monitor','Displays',219.00),(4,'USB-C Hub','Accessories',45.00),
 (5,'Laptop Stand','Accessories',32.75),(6,'Noise Cancelling Headset','Audio',149.99),
 (7,'Webcam 1080p','Peripherals',59.00),(8,'Desk Lamp','Accessories',18.25),
 (9,'34in Ultrawide','Displays',429.00),(10,'Studio Microphone','Audio',112.40),
 (11,'Cable Organiser','Accessories',9.99),(12,'Portable SSD 1TB','Storage',98.00),
 (13,'Ergonomic Footrest','Accessories',27.50),(14,'Laptop Sleeve 15in','Accessories',22.00);

INSERT INTO orders VALUES
 (1,1,'2025-02-01','delivered'),(2,1,'2025-05-14','delivered'),
 (3,2,'2025-03-19','delivered'),(4,3,'2025-05-02','cancelled'),
 (5,3,'2025-08-23','delivered'),(6,4,'2025-09-30','delivered'),
 (7,5,'2025-11-11','shipped'),(8,6,'2026-01-20','delivered'),
 (9,7,'2026-02-28','shipped'),(10,7,'2026-04-15','delivered'),
 (11,8,'2026-04-02','pending'),(12,9,'2026-05-19','delivered'),
 (13,9,'2026-06-21','shipped'),(14,1,'2026-07-04','delivered'),
 (15,4,'2026-07-25','cancelled');

INSERT INTO order_items VALUES
 (1,1,1,1,89.99),(2,1,2,2,24.50),(3,2,3,1,219.00),
 (4,3,6,1,149.99),(5,3,11,3,9.99),(6,4,4,1,45.00),
 (7,5,9,1,429.00),(8,5,5,2,32.75),(9,6,7,1,59.00),
 (10,7,10,1,112.40),(11,8,1,2,89.99),(12,8,8,1,18.25),
 (13,9,12,1,98.00),(14,10,3,2,219.00),(15,10,2,1,24.50),
 (16,11,6,1,149.99),(17,12,9,1,429.00),(18,12,1,1,89.99),
 (19,13,5,1,32.75),(20,14,12,2,98.00),(21,14,4,1,45.00),
 (22,15,8,2,18.25);

INSERT INTO employees VALUES
 (1,'Maya Iyer','Engineering',142000,NULL,'2021-02-01'),
 (2,'Tom Blake','Engineering',98000,1,'2022-06-15'),
 (3,'Sara Kim','Engineering',105000,1,'2021-11-03'),
 (4,'Luis Ortega','Sales',87000,NULL,'2020-09-12'),
 (5,'Nina Patel','Sales',72000,4,'2023-01-20'),
 (6,'Omar Said','Sales',95000,4,'2022-03-30'),
 (7,'Priya Nair','Support',61000,NULL,'2022-08-08'),
 (8,'Quinn Doyle','Support',58000,7,'2024-02-14'),
 (9,'Rui Costa','Support',64000,7,'2023-05-25'),
 (10,'Sofia Ricci','Engineering',119000,1,'2020-04-19');

Worked solution


      

Why