Production Relational SchemaIntermediate
Food Delivery
Restaurants, users, orders, riders and delivery events.
7 Tables30K+ RecordsJoinsDatesAggregation
Interactive SQL Playground & Query Runner
In-Browser SandboxRun realistic queries against the Food Delivery database. Write custom SQL or solve high-yield interview problems.
Interview Challenge:
easyTotal Restaurant Order Volumes and Spend
Summarize total orders and gross revenue generated per restaurant eatery.
GROUP BYSUMJOIN
query.sql
Press Ctrl + Enter to execute
Entity Relationship (ER) & Foreign Key Architecture
Referential integrity mappings and table cardinalities
1:NMenu Items
restaurants
eatery_id
restaurant_items
eatery_id
1:NPlaces Orders
users
diner_id
orders
diner_id
1:NPrepares Orders
restaurants
eatery_id
orders
eatery_id
1:1Dispatched Via
orders
order_id
deliveries
order_id
1:NDelivers
riders
rider_id
deliveries
rider_id
1:1Receives Review
orders
order_id
feedback
order_id
Relational Tables & Column Data Types
Field definitions, types, and primary keys for query construction
users
3 colsPKdiner_id
INTdiner_name
VARCHAR(90)neighborhood
VARCHAR(70)restaurants
4 colsPKeatery_id
INTeatery_name
VARCHAR(100)cuisine
VARCHAR(50)rating
DECIMAL(2,1)restaurant_items
4 colsPKitem_id
INTPKeatery_id
INTitem_name
VARCHAR(100)price
DECIMAL(10,2)orders
5 colsPKorder_id
INTPKdiner_id
INTPKeatery_id
INTordered_at
DATETIMEorder_total
DECIMAL(10,2)riders
3 colsPKrider_id
INTrider_name
VARCHAR(90)home_area
VARCHAR(70)deliveries
5 colsPKdelivery_id
INTPKorder_id
INTPKrider_id
INTpicked_at
DATETIMEdelivered_at
DATETIMEfeedback
4 colsPKfeedback_id
INTPKorder_id
INTscore
INTnote
VARCHAR(200)Runnable DDL Setup & Seed Script
Run directly in MySQL Workbench, pgAdmin, DBeaver, or terminal
CREATE DATABASE IF NOT EXISTS studyflow_food;
USE studyflow_food;
CREATE TABLE users (
diner_id INT PRIMARY KEY,
diner_name VARCHAR(90) NOT NULL,
neighborhood VARCHAR(70)
);
CREATE TABLE restaurants (
eatery_id INT PRIMARY KEY,
eatery_name VARCHAR(100) NOT NULL,
cuisine VARCHAR(50),
rating DECIMAL(2,1)
);
CREATE TABLE restaurant_items (
item_id INT PRIMARY KEY,
eatery_id INT,
item_name VARCHAR(100),
price DECIMAL(10,2),
FOREIGN KEY (eatery_id) REFERENCES restaurants(eatery_id)
);
CREATE TABLE orders (
order_id INT PRIMARY KEY,
diner_id INT,
eatery_id INT,
ordered_at DATETIME,
order_total DECIMAL(10,2),
FOREIGN KEY (diner_id) REFERENCES users(diner_id),
FOREIGN KEY (eatery_id) REFERENCES restaurants(eatery_id)
);
CREATE TABLE riders (
rider_id INT PRIMARY KEY,
rider_name VARCHAR(90),
home_area VARCHAR(70)
);
CREATE TABLE deliveries (
delivery_id INT PRIMARY KEY,
order_id INT,
rider_id INT,
picked_at DATETIME,
delivered_at DATETIME,
FOREIGN KEY (order_id) REFERENCES orders(order_id),
FOREIGN KEY (rider_id) REFERENCES riders(rider_id)
);
CREATE TABLE feedback (
feedback_id INT PRIMARY KEY,
order_id INT,
score INT,
note VARCHAR(200),
FOREIGN KEY (order_id) REFERENCES orders(order_id)
);
INSERT INTO users VALUES
(1,'Ira','Malviya Nagar'),(2,'Dev','Vytilla'),(3,'Mira','Adajan'),(4,'Kabir','Vaishali Nagar');
INSERT INTO restaurants VALUES
(1,'Spice Route','Indian',4.5),(2,'Green Bowl','Healthy',4.2),(3,'Noodle Yard','Asian',4.4);
INSERT INTO restaurant_items VALUES
(1,1,'Paneer Bowl',240),(2,1,'Dal Rice',180),(3,2,'Tofu Salad',260),(4,2,'Grain Bowl',290),(5,3,'Chilli Noodles',220);
INSERT INTO orders VALUES
(1001,1,1,'2026-04-01 12:20:00',420),(1002,1,2,'2026-04-02 19:10:00',290),
(1003,2,3,'2026-04-03 20:05:00',440),(1004,3,1,'2026-04-04 13:15:00',240),
(1005,4,2,'2026-04-05 21:00:00',550);
INSERT INTO riders VALUES
(1,'Ravi','Central'),(2,'Nia','South'),(3,'Aman','West');
INSERT INTO deliveries VALUES
(1,1001,1,'2026-04-01 12:35:00','2026-04-01 13:02:00'),
(2,1002,2,'2026-04-02 19:25:00','2026-04-02 19:58:00'),
(3,1003,3,'2026-04-03 20:20:00','2026-04-03 20:55:00'),
(4,1004,1,'2026-04-04 13:30:00','2026-04-04 14:01:00');
INSERT INTO feedback VALUES
(1,1001,5,'Fast delivery'),(2,1002,4,'Good packaging'),(3,1003,5,'Hot and fresh'),(4,1004,3,'Slightly late');