TGViewer
SQL Programming Resources SQL Programming Resources @sqlanalyst ยท 76.7K subscribers
Post #2659 1.75K
๐Ÿš€ SQL Project Series #32

SaaS Subscription & Revenue Analytics ๐Ÿ’ป๐Ÿ’ฐ

Analyze subscriptions, plans, payments, upgrades, downgrades, and churn to understand how a SaaS business grows revenue and retains customers.

๐ŸŽฏ Business Objectives

โœ… Analyze subscription growth

โœ… Calculate MRR and ARR

โœ… Track upgrades and downgrades

โœ… Measure customer churn

โœ… Analyze revenue by plan

โœ… Calculate ARPU and CLV

โœ… Identify high-value customers

โœ… Measure monthly revenue growth

๐Ÿ“‚ Step 1: Create Database

CREATE DATABASE saas_revenue_db;
USE saas_revenue_db;


๐Ÿ“‚ Step 2: Create Customers Table

CREATE TABLE customers (
customer_id INT PRIMARY KEY,
customer_name VARCHAR(100),
company_name VARCHAR(100),
signup_date DATE,
country VARCHAR(50)
);


๐Ÿ“‚ Step 3: Create Plans Table

CREATE TABLE plans (
plan_id INT PRIMARY KEY,
plan_name VARCHAR(50),
monthly_price DECIMAL(10,2)
);


๐Ÿ“‚ Step 4: Create Subscriptions Table

CREATE TABLE subscriptions (
subscription_id INT PRIMARY KEY,
customer_id INT,
plan_id INT,
start_date DATE,
end_date DATE,
subscription_status VARCHAR(20),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id),
FOREIGN KEY (plan_id) REFERENCES plans(plan_id)
);


๐Ÿ“‚ Step 5: Create Subscription Changes Table

CREATE TABLE subscription_changes (
change_id INT PRIMARY KEY,
subscription_id INT,
change_date DATE,
old_plan_id INT,
new_plan_id INT,
change_type VARCHAR(20),
FOREIGN KEY (subscription_id) REFERENCES subscriptions(subscription_id),
FOREIGN KEY (old_plan_id) REFERENCES plans(plan_id),
FOREIGN KEY (new_plan_id) REFERENCES plans(plan_id)
);


๐Ÿ“‚ Step 6: Create Payments Table

CREATE TABLE payments (
payment_id INT PRIMARY KEY,
subscription_id INT,
payment_date DATE,
amount DECIMAL(10,2),
payment_status VARCHAR(20),
FOREIGN KEY (subscription_id) REFERENCES subscriptions(subscription_id)
);


๐Ÿ“‚ Step 7: Insert Sample Customers

INSERT INTO customers VALUES
(1,'Rahul Sharma','DataPro','2025-01-05','India'),
(2,'Priya Verma','TechLabs','2025-01-10','India'),
(3,'Amit Patel','FinTech Solutions','2025-01-15','India'),
(4,'Sneha Joshi','CloudWorks','2025-02-01','India'),
(5,'Rohan Gupta','Analytics Hub','2025-02-10','India');


๐Ÿ“‚ Step 8: Insert Sample Plans

INSERT INTO plans VALUES
(101,'Basic',499),
(102,'Professional',999),
(103,'Business',2499),
(104,'Enterprise',4999);


๐Ÿ“‚ Step 9: Insert Sample Subscriptions

INSERT INTO subscriptions VALUES
(1001,1,102,'2025-01-05',NULL,'Active'),
(1002,2,101,'2025-01-10','2025-04-10','Cancelled'),
(1003,3,104,'2025-01-15',NULL,'Active'),
(1004,4,103,'2025-02-01',NULL,'Active'),
(1005,5,102,'2025-02-10',NULL,'Active');


๐Ÿ“‚ Step 10: Insert Sample Subscription Changes

INSERT INTO subscription_changes VALUES
(1,1001,'2025-03-01',101,102,'Upgrade'),
(2,1004,'2025-04-01',103,104,'Upgrade'),
(3,1005,'2025-05-01',102,101,'Downgrade');


๐Ÿ“‚ Step 11: Insert Sample Payments

INSERT INTO payments VALUES
(501,1001,'2025-02-01',999,'Paid'),
(502,1002,'2025-02-01',499,'Paid'),
(503,1003,'2025-02-01',4999,'Paid'),
(504,1004,'2025-02-01',2499,'Paid'),
(505,1005,'2025-02-01',999,'Paid');
More from @sqlanalyst
  1. Oct 7, 2026๐Ÿš€๐—ฃ๐—ฎ๐˜† ๐—”๐—ณ๐˜๐—ฒ๐—ฟ ๐—ฃ๐—น๐—ฎ๐—ฐ๐—ฒ๐—บ๐—ฒ๐—ป๐˜ ๐—ง๐—ฟ๐—ฎ๐—ถ๐—ป๐—ถ๐—ป๐—ด | ๐—•๐—ฒ๐—ฐ๐—ผ๐—บ๐—ฒ ๐—ฎ ๐—™๐˜‚๐—น๐—น๐˜€๐˜๐—ฎ๐—ฐโ€ฆ
  2. Oct 7, 2026SQL Interview Series โ€” Part 4 ๐Ÿ“Œ Question 4: Find the Highest Salary in Each Department Suโ€ฆ
  3. Oct 7, 2026๐— ๐—ฎ๐˜€๐˜๐—ฒ๐—ฟ ๐—ฃ๐—ผ๐˜„๐—ฒ๐—ฟ ๐—•๐—œ ๐—ณ๐—ผ๐—ฟ ๐—™๐—ฅ๐—˜๐—˜! ๐Ÿ”ฅ Learn Power BI through these FREE learninโ€ฆ
  4. Sep 29, 2026SQL Interview Series โ€” Part 2 ๐Ÿ“Œ Question 2: Find Duplicate Records Suppose you have an Emโ€ฆ
  5. Sep 29, 2026๐—™๐—ฅ๐—˜๐—˜ ๐—ฅ๐—ฒ๐˜€๐—ผ๐˜‚๐—ฟ๐—ฐ๐—ฒ๐˜€ ๐—ง๐—ผ ๐—Ÿ๐—ฒ๐—ฎ๐—ฟ๐—ป ๐—”๐—œ ๐—ถ๐—ป ๐Ÿฎ๐Ÿฌ๐Ÿฎ๐Ÿฒ๐Ÿš€ โ€‹ Explore 6 free resourceโ€ฆ
  6. Sep 29, 2026SQL Interview Series โ€” Part 1 Hi guys, let's start a SQL interview series covering frequenโ€ฆ
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook โ†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 โ†’