SQL Programming Resources
74.9K subscribers
494 photos
13 files
435 links
Find top SQL resources from global universities, cool projects, and learning materials for data analytics.

Admin: @coderfun

Useful links: heylink.me/DataAnalytics

Promotions: @love_data
Download Telegram
SQL Interview Ques & ANS ๐Ÿ’ฅ
โค7
โœ… SQL Mistakes Beginners Should Avoid ๐Ÿง ๐Ÿ’ป

1๏ธโƒฃ Using SELECT *
โ€ข Pulls unused columns
โ€ข Slows queries
โ€ข Breaks when schema changes
โ€ข Use only required columns

2๏ธโƒฃ Ignoring NULL Values
โ€ข NULL breaks calculations
โ€ข COUNT(column) skips NULL
โ€ข Use COALESCE or IS NULL checks

3๏ธโƒฃ Wrong JOIN Type
โ€ข INNER instead of LEFT
โ€ข Data silently disappears
โ€ข Always ask: Do you need unmatched rows?

4๏ธโƒฃ Missing JOIN Conditions
โ€ข Creates cartesian product
โ€ข Rows explode
โ€ข Always join on keys

5๏ธโƒฃ Filtering After JOIN Instead of Before
โ€ข Processes more rows than needed
โ€ข Slower performance
โ€ข Filter early using WHERE or subqueries

6๏ธโƒฃ Using WHERE Instead of HAVING
โ€ข WHERE filters rows
โ€ข HAVING filters groups
โ€ข Aggregates fail without HAVING

7๏ธโƒฃ Not Using Indexes
โ€ข Full table scans
โ€ข Slow dashboards
โ€ข Index columns used in JOIN, WHERE, ORDER BY

8๏ธโƒฃ Relying on ORDER BY in Subqueries
โ€ข Order not guaranteed
โ€ข Results change
โ€ข Use ORDER BY only in final query

9๏ธโƒฃ Mixing Data Types
โ€ข Implicit conversions
โ€ข Index not used
โ€ข Match column data types

๐Ÿ”Ÿ No Query Validation
โ€ข Results look right but are wrong
โ€ข Always cross-check counts and totals

๐Ÿง  Practice Task
โ€ข Rewrite one query
โ€ข Remove SELECT *
โ€ข Add proper JOIN
โ€ข Handle NULLs
โ€ข Compare result count

SQL Resources: https://whatsapp.com/channel/0029VanC5rODzgT6TiTGoa1v

โค๏ธ Double Tap For More
โค9
โœ… ๐Ÿ”ค Aโ€“Z of SQL Commands ๐Ÿ—„๏ธ๐Ÿ’ปโšก

A โ€“ ALTER
Modify an existing table structure (add/modify/drop columns).

B โ€“ BEGIN
Start a transaction block.

C โ€“ CREATE
Create database objects like tables, views, indexes.

D โ€“ DELETE
Remove records from a table.

E โ€“ EXISTS
Check if a subquery returns any rows.

F โ€“ FETCH
Retrieve rows from a cursor.

G โ€“ GRANT
Give privileges to users.

H โ€“ HAVING
Filter aggregated results (used with GROUP BY).

I โ€“ INSERT
Add new records into a table.

J โ€“ JOIN
Combine rows from two or more tables.

K โ€“ KEY (PRIMARY KEY / FOREIGN KEY)
Define constraints for uniqueness and relationships.

L โ€“ LIMIT
Restrict number of rows returned (MySQL/PostgreSQL).

M โ€“ MERGE
Insert/update data conditionally (mainly in SQL Server/Oracle).

N โ€“ NULL
Represents missing or unknown data.

O โ€“ ORDER BY
Sort query results.

P โ€“ PROCEDURE
Stored program in the database.

Q โ€“ QUERY
Request for data (general SQL statement).

R โ€“ ROLLBACK
Undo changes in a transaction.

S โ€“ SELECT
Retrieve data from tables.

T โ€“ TRUNCATE
Remove all records from a table quickly.

U โ€“ UPDATE
Modify existing records.

V โ€“ VIEW
Virtual table based on a query.

W โ€“ WHERE
Filter records based on conditions.

X โ€“ XML PATH
Generate XML output (mainly SQL Server).

Y โ€“ YEAR()
Extract year from a date.

Z โ€“ ZONE (AT TIME ZONE)
Convert datetime to specific time zone.

โค๏ธ Double Tap for More
โค18
โœ… Complete Roadmap to Learn SQL in 2026 ๐Ÿš€

๐Ÿ’Ž SQL powers 80% of data analytics jobs.

๐Ÿ“š ๐Ÿ”น SQL FOUNDATIONS

๐ŸŽฏ 1๏ธโƒฃ SELECT Basics (Week 1)
- SELECT \*, specific columns
- FROM tables
- WHERE filters
- ORDER BY, LIMIT

๐ŸŸข Practice: Query your first dataset today

๐Ÿ” 2๏ธโƒฃ Filtering Mastery
- Comparison operators (=, >, BETWEEN)
- Logical: AND, OR, IN
- Pattern matching: LIKE, %
- NULL handling

๐Ÿ“Š 3๏ธโƒฃ Aggregate Power
- COUNT(\*), SUM, AVG, MIN/MAX
- GROUP BY essentials
- HAVING vs WHERE
- DISTINCT counts

๐ŸŽ“ ๐Ÿ”ฅ SQL CORE SKILLS

๐Ÿ”— 4๏ธโƒฃ JOINS (Most Important โญ)
- INNER JOIN (must-know)
- LEFT, RIGHT, FULL JOIN
- Multi-table joins
- Self-joins

โšก 5๏ธโƒฃ Subqueries & CTEs
- Subqueries in WHERE/FROM
- WITH clause (CTEs)
- Multiple CTE chains
- EXISTS/NOT EXISTS

๐Ÿ“ˆ 6๏ธโƒฃ Window Functions (Game-Changer โญ)
- ROW_NUMBER(), RANK()
- PARTITION BY magic
- LAG/LEAD (trends)
- Running totals

๐ŸŽจ ๐Ÿš€ ADVANCED SQL MASTERY

โฐ 7๏ธโƒฃ Date & Time
- DATEADD, DATEDIFF
- DATE_TRUNC, EXTRACT
- Date filtering patterns
- Cohort analysis

๐Ÿ”ค 8๏ธโƒฃ String Functions
- CONCAT, SUBSTRING
- TRIM, UPPER/LOWER
- LENGTH, REPLACE

๐Ÿค– 9๏ธโƒฃ CASE Statements
- Simple vs searched CASE
- Nested logic
- Policy calculations

โš™๏ธ ๐Ÿ”ง PERFORMANCE & JOBS

๐Ÿš€ 1๏ธโƒฃ0๏ธโƒฃ Indexing Basics
- CREATE INDEX strategies
- EXPLAIN query plans
- Composite indexes

๐Ÿ’ป 1๏ธโƒฃ1๏ธโƒฃ Practice Platforms
- LeetCode SQL (50 problems)
- HackerRank SQL
- StrataScratch (real cases)
- DDIA datasets

๐Ÿ“ฑ 1๏ธโƒฃ2๏ธโƒฃ Modern SQL Tools
- pgAdmin (PostgreSQL)
- DBeaver (universal)
- BigQuery Sandbox (free)
- dbt + SQL

๐Ÿ’ผ โšก INTERVIEW READY

๐ŸŽฏ 1๏ธโƒฃ3๏ธโƒฃ Top Interview Questions
- Find 2nd highest salary
- Nth highest records
- Duplicate detection
- Window ranking

๐Ÿ“Š 1๏ธโƒฃ4๏ธโƒฃ Real Projects
- Sales dashboard queries
- Customer segmentation
- Inventory optimization
- Build GitHub portfolio

๐ŸŽจ โญ ESSENTIAL SQL TOOLS 2026
- PostgreSQL (free, powerful)
- MySQL Workbench
- BigQuery (cloud-native)
- Snowflake (trial)

1๏ธโƒฃ5๏ธโƒฃ FREE RESOURCES
๐ŸŒ SQLBolt (interactive)
๐Ÿ“š Mode Analytics Tutorial
โšก LeetCode SQL 50
๐ŸŽฅ DataCamp SQL (free tier)
๐Ÿ™ W3schools

Double Tap โ™ฅ๏ธ For Detailed Explanation
โค9
If I had to start learning data analyst all over again, I'd follow this:

1- Learn SQL:

---- Joins (Inner, Left, Full outer and Self)
---- Aggregate Functions (COUNT, SUM, AVG, MIN, MAX)
---- Group by and Having clause
---- CTE and Subquery
---- Windows Function (Rank, Dense Rank, Row number, Lead, Lag etc)

2- Learn Excel:

---- Mathematical (COUNT, SUM, AVG, MIN, MAX, etc)
---- Logical Functions (IF, AND, OR, NOT)
---- Lookup and Reference (VLookup, INDEX, MATCH etc)
---- Pivot Table, Filters, Slicers

3- Learn BI Tools:

---- Data Integration and ETL (Extract, Transform, Load)
---- Report Generation
---- Data Exploration and Ad-hoc Analysis
---- Dashboard Creation

4- Learn Python (Pandas) Optional:

---- Data Structures, Data Cleaning and Preparation
---- Data Manipulation
---- Merging and Joining Data (Merging and joining DataFrames -similar to SQL joins)
---- Data Visualization (Basic plotting using Matplotlib and Seaborn)

Hope this helps you ๐Ÿ˜Š
โค3
๐ŸŽฏ SQL Fundamentals Part-1: SELECT Basics

SELECT is the most used SQL command, used to retrieve data from a database.

Think of SQL like asking questions to a database. SELECT = asking what data you want.

โœ… What is SELECT in SQL?
SELECT statement retrieves data from one or more tables in a database.

๐Ÿ‘‰ Basic Syntax
SELECT column_name 
FROM table_name;


How SQL executes:
1. Finds table (FROM)
2. Applies filter (WHERE)
3. Returns selected columns (SELECT)
4. Sorts results (ORDER BY)
5. Limits rows (LIMIT)

๐Ÿ”น 1. SELECT All Columns (SELECT *)
Used to retrieve every column from a table.

SELECT * 
FROM employees;


๐Ÿ‘‰ Returns complete table data.

๐Ÿ“Œ When to use:
โœ” Exploring new dataset
โœ” Checking table structure
โœ” Quick testing

โš ๏ธ Avoid in production: Slow on large tables, fetches unnecessary data.

๐Ÿ”น 2. SELECT Specific Columns
Best practice โ€” retrieve only required data.
SELECT name, salary 
FROM employees;


๐Ÿ‘‰ Returns only selected columns.
๐Ÿ’ก Why important:
โœ… Faster queries
โœ… Better performance
โœ… Cleaner results

๐Ÿ”น 3. FROM Clause (Data Source)
Specifies where data comes from.
SELECT name 
FROM customers;


๐Ÿ‘‰ SQL reads data from customers table.

๐Ÿ”น 4. WHERE Clause (Filtering Data)
Used to filter rows based on conditions.
SELECT column 
FROM table
WHERE condition;


Examples:
- Filter by value: SELECT * FROM employees WHERE salary > 50000;
- Filter by text: SELECT * FROM employees WHERE city = 'Mumbai';

๐Ÿ”น 5. ORDER BY (Sorting Results)
Sorts query results.
SELECT column 
FROM table
ORDER BY column ASC | DESC;


Examples:
- Ascending: SELECT name, salary FROM employees ORDER BY salary ASC;
- Descending: SELECT name, salary FROM employees ORDER BY salary DESC;

๐Ÿ”น 6. LIMIT (Control Output Rows)
Restricts number of returned rows.
SELECT * 
FROM employees
LIMIT 5;


๐Ÿ‘‰ Returns first 5 records.

โญ SQL Query Execution Order
1. FROM
2. WHERE
3. SELECT
4. ORDER BY
5. LIMIT

๐Ÿง  Real-World Example
Business question: "Show top 10 highest paid employees."
SELECT name, salary 
FROM employees
ORDER BY salary DESC
LIMIT 10;


๐Ÿš€ Mini Practice Tasks
โœ… Task 1: Get all records from customers.
โœ… Task 2: Show only customer name and city.
โœ… Task 3: Find employees with salary > 40000.
โœ… Task 4: Show top 3 highest priced products.

Double Tap โ™ฅ๏ธ For Part-2
โค14๐Ÿค”1
๐Ÿ” SQL Fundamentals Part-2: Filtering

After learning SELECT basics, the next step is learning how to filter data.

๐Ÿ‘‰ In real-world data analysis, you rarely need full data โ€” you filter specific rows.

Filtering = extracting only relevant data from a table.

โœ… What is Filtering in SQL?
Filtering is done using the WHERE clause.

It allows you to:
โœ” Get specific records
โœ” Apply conditions
โœ” Clean data
โœ” Extract business insights

๐Ÿ”น 1. Comparison Operators
Used to compare values.
Operator Meaning
โ€ข = Equal
โ€ข > Greater than
โ€ข < Less than
โ€ข >= Greater than or equal
โ€ข <= Less than or equal
โ€ข != or <> Not equal

โœ… Examples

โ€ข Equal to
SELECT * FROM employees WHERE city = 'Pune';

โ€ข Greater than
SELECT * FROM employees WHERE salary > 50000;

โ€ข Not equal
SELECT * FROM employees WHERE department != 'HR';

๐Ÿ’ก Most commonly used in dashboards reporting.

๐Ÿ”น 2. Logical Operators (AND, OR, NOT)

Used to combine multiple conditions.

โœ… AND โ€” Both conditions must be true

SELECT * FROM employees WHERE salary > 50000 AND city = 'Mumbai';

๐Ÿ‘‰ Returns employees with: salary > 50000 AND located in Mumbai

โœ… OR โ€” Any condition can be true

SELECT * FROM employees WHERE city = 'Delhi' OR city = 'Pune';

๐Ÿ‘‰ Returns employees from either city.

โœ… NOT โ€” Reverse condition

SELECT * FROM employees WHERE NOT department = 'Sales';

๐Ÿ‘‰ Excludes Sales department.

๐Ÿ”น 3. BETWEEN (Range Filtering)

Used to filter values within a range.

Syntax
SELECT * FROM table WHERE column BETWEEN value1 AND value2;

โœ… Example
SELECT * FROM employees WHERE salary BETWEEN 30000 AND 70000;

๐Ÿ‘‰ Includes boundary values.

๐Ÿ”น 4. IN Operator (Multiple Values Shortcut)

Better alternative to multiple OR conditions.

โŒ Without IN
WHERE city = 'Pune' OR city = 'Delhi' OR city = 'Mumbai'

โœ… With IN
SELECT * FROM employees WHERE city IN ('Pune','Delhi','Mumbai');

๐Ÿ‘‰ Cleaner and faster.

๐Ÿ”น 5. LIKE โ€” Pattern Matching
Used for searching text patterns.

โญ Wildcards
Symbol Meaning
โ€ข % Any number of characters
โ€ข _ Single character

โœ… Starts with "A"
SELECT * FROM customers WHERE name LIKE 'A%';

โœ… Ends with "n"
WHERE name LIKE '%n';

โœ… Contains "an"
WHERE name LIKE '%an%';

Used heavily in search features.

๐Ÿ”น 6. NULL Handling (Very Important โญ)

NULL means:
๐Ÿ‘‰ Missing / unknown value
๐Ÿ‘‰ Not zero
๐Ÿ‘‰ Not empty

โŒ Wrong
WHERE salary = NULL

โœ… Correct
SELECT * FROM employees WHERE salary IS NULL;

Check non-null values
WHERE salary IS NOT NULL;

๐Ÿ’ก Very common interview question.

โญ Order of Filtering Execution
SQL processes filtering after reading table:

FROM โ†’ WHERE โ†’ SELECT โ†’ ORDER BY โ†’ LIMIT

๐Ÿง  Real-World Data Analyst Examples

Q. Find customers from Pune
SELECT * FROM customers WHERE city = 'Pune';

Q. Find high-paying jobs in IT department
SELECT * FROM employees WHERE salary > 80000 AND department = 'IT';

Q. Find names starting with "R"
SELECT * FROM employees WHERE name LIKE 'R%';

Used daily in business analytics.

๐Ÿš€ Mini Practice Tasks
โœ… Q1
Find employees whose salary is greater than 60000.
โœ… Q2
Find customers from Pune or Mumbai.
โœ… Q3
Find products priced between 100 and 500.
โœ… Q4
Find employees whose name starts with "S".
โœ… Q5
Find records where email is missing (NULL).

โœ… Double Tap โ™ฅ๏ธ For More
โค8
SQL is easy to learn, but difficult to master.

Here are 5 hacks to level up your SQL ๐Ÿ‘‡

1. Know complex joins
2. Master Window functions
3. Explore alternative solutions
4. Master query optimization
5. Get familiar with ETL

โ€”โ€”โ€”

๐˜‰๐˜ต๐˜ธ, ๐˜ต๐˜ฉ๐˜ฆ๐˜ณ๐˜ฆ ๐˜ข๐˜ณ๐˜ฆ ๐˜ฑ๐˜ณ๐˜ข๐˜ค๐˜ต๐˜ช๐˜ค๐˜ฆ ๐˜ฑ๐˜ณ๐˜ฐ๐˜ฃ๐˜ญ๐˜ฆ๐˜ฎ๐˜ด ๐˜ช๐˜ฏ ๐˜ต๐˜ฉ๐˜ฆ ๐˜ค๐˜ข๐˜ณ๐˜ฐ๐˜ถ๐˜ด๐˜ฆ๐˜ญ.

๐Ÿญ/ ๐—ž๐—ป๐—ผ๐˜„ ๐—ฐ๐—ผ๐—บ๐—ฝ๐—น๐—ฒ๐˜… ๐—ท๐—ผ๐—ถ๐—ป๐˜€

LEFT JOIN, RIGHT JOIN, INNER JOIN, OUTER JOIN โ€” these are easy.

But SQL gets really powerful, when you know
โ†ณ Anti Joins
โ†ณ Self Joins
โ†ณ Cartesian Joins
โ†ณ Multi-Table Joins

๐Ÿฎ/ ๐— ๐—ฎ๐˜€๐˜๐—ฒ๐—ฟ ๐—ช๐—ถ๐—ป๐—ฑ๐—ผ๐˜„ ๐—ณ๐˜‚๐—ป๐—ฐ๐˜๐—ถ๐—ผ๐—ป๐˜€

Window functions = flexible, effective, and essential.

They give you Python-like versatility in SQL. ๐˜š๐˜ถ๐˜ฑ๐˜ฆ๐˜ณ ๐˜ค๐˜ฐ๐˜ฐ๐˜ญ.

๐Ÿฏ/ ๐—˜๐˜…๐—ฝ๐—น๐—ผ๐—ฟ๐—ฒ ๐—ฎ๐—น๐˜๐—ฒ๐—ฟ๐—ป๐—ฎ๐˜๐—ถ๐˜ƒ๐—ฒ ๐˜€๐—ผ๐—น๐˜‚๐˜๐—ถ๐—ผ๐—ป๐˜€

In SQL, thereโ€™s rarely one โ€œrightโ€ way to solve a problem.

By exploring alternative approaches, you develop flexibility in thinking AND learn about trade-offs.

๐Ÿฐ/ ๐— ๐—ฎ๐˜€๐˜๐—ฒ๐—ฟ ๐—พ๐˜‚๐—ฒ๐—ฟ๐˜† ๐—ผ๐—ฝ๐˜๐—ถ๐—บ๐—ถ๐˜‡๐—ฎ๐˜๐—ถ๐—ผ๐—ป

Inefficient queries overload systems, cost money and waste time.

3 (super quick) tips on optimizing queries:
1. Use indexes effectively
2. Analyze execution plans
3. Reduce unnecessary operations

๐Ÿฑ/ ๐—š๐—ฒ๐˜ ๐—ณ๐—ฎ๐—บ๐—ถ๐—น๐—ถ๐—ฎ๐—ฟ ๐˜„๐—ถ๐˜๐—ต ๐—˜๐—ง๐—Ÿ

ETL is the backbone of moving and preparing data.

โ†ณ Extract: Pull data from various sources
โ†ณ Transform: Clean, filter, and reformat the data
โ†ณ Load: Store the cleaned data in a data warehouse

Here you can find essential SQL Interview Resources๐Ÿ‘‡
https://t.iss.one/mysqldata

Like this post if you need more ๐Ÿ‘โค๏ธ

Hope it helps :)
โค5
Here are some essential SQL tips for beginners ๐Ÿ‘‡๐Ÿ‘‡

โ—† Primary Key = Unique Key + Not Null constraint
โ—† To perform case insensitive search use UPPER() function ex. UPPER(customer_name) LIKE โ€˜A%Aโ€™
โ—† LIKE operator is for string data type
โ—† COUNT(*), COUNT(1), COUNT(0) all are same
โ—† All aggregate functions ignore the NULL values
โ—† Aggregate functions MIN, MAX, SUM, AVG, COUNT are for int data type whereas STRING_AGG is for string data type
โ—† For row level filtration use WHERE and aggregate level filtration use HAVING
โ—† UNION ALL will include duplicates where as UNION excludes duplicates 
โ—† If the results will not have any duplicates, use UNION ALL instead of UNION
โ—† We have to alias the subquery if we are using the columns in the outer select query
โ—† Subqueries can be used as output with NOT IN condition.
โ—† CTEs look better than subqueries. Performance wise both are same.
โ—† When joining two tables , if one table has only one value then we can use 1=1 as a condition to join the tables. This will be considered as CROSS JOIN.
โ—† Window functions work at ROW level.
โ—† The difference between RANK() and DENSE_RANK() is that RANK() skips the rank if the values are the same.
โ—† EXISTS works on true/false conditions. If the query returns at least one value, the condition is TRUE. All the records corresponding to the conditions are returned.

Like for more ๐Ÿ˜„๐Ÿ˜„
โค4
๐Ÿ”— SQL Fundamentals Part-4: JOINS

In real databases, data is stored in multiple tables, not one big table. JOINS allow you to combine data from different tables.

Example:
Customers Table
customer_id | name
1 | Rahul
2 | Priya

Orders Table
order_id | customer_id | amount
101 | 1 | 500
102 | 2 | 300

To see customer name + order amount, we must use JOIN.

Basic JOIN Syntax

SELECT columns
FROM table1
JOIN table2
ON table1.column = table2.column;

ON defines the relationship between tables.

1๏ธโƒฃ INNER JOIN
Returns only matching records from both tables.

SELECT customers.name, orders.amount
FROM customers
INNER JOIN orders
ON customers.customer_id = orders.customer_id;

Result:
name | amount
Rahul | 500
Priya | 300

๐Ÿ‘‰ If a customer has no order, they will not appear.

2๏ธโƒฃ LEFT JOIN (Very Common โญ)

Returns: All rows from left table, Matching rows from right table, If no match โ†’ NULL

SELECT customers.name, orders.amount
FROM customers
LEFT JOIN orders
ON customers.customer_id = orders.customer_id;

Result:
name | amount
Rahul | 500
Priya | 300
Amit | NULL

๐Ÿ‘‰ Amit has no order.

3๏ธโƒฃ RIGHT JOIN

Opposite of LEFT JOIN. Returns: All rows from right table, Matching rows from left table

SELECT customers.name, orders.amount
FROM customers
RIGHT JOIN orders
ON customers.customer_id = orders.customer_id;

Used less frequently in analytics.

4๏ธโƒฃ FULL JOIN
Returns: All records from both tables, If no match โ†’ NULL

SELECT customers.name, orders.amount
FROM customers
FULL JOIN orders
ON customers.customer_id = orders.customer_id;

5๏ธโƒฃ SELF JOIN

A table joins with itself. Used when rows relate to other rows in the same table.

SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m
ON e.manager_id = m.employee_id;

JOIN Visual Understanding

โ€ข INNER JOIN: Only matching rows
โ€ข LEFT JOIN: All left + matching right
โ€ข RIGHT JOIN: All right + matching left
โ€ข FULL JOIN: All rows from both
โ€ข SELF JOIN: Table joined with itself

Real Data Analyst Examples
-- Customer order report
SELECT c.name, o.amount
FROM customers c
JOIN orders o
ON c.customer_id = o.customer_id;

-- Products with category
SELECT p.product_name, c.category
FROM products p
JOIN categories c
ON p.category_id = c.category_id;

-- Sales by region
SELECT r.region_name, SUM(s.amount)
FROM sales s
JOIN regions r
ON s.region_id = r.region_id
GROUP BY r.region_name;

Used daily in Power BI dashboards, analytics queries, and reports.

Mini Practice Tasks
1. Show customer names with their order amount.
2. Show all customers even if they have no orders.
3. Show employees with their manager names.
4. Show products with their category name.

Common Interview Questions
โœ” Difference between INNER JOIN and LEFT JOIN
โœ” When to use SELF JOIN
โœ” Why LEFT JOIN is used in analytics
โœ” Difference between JOIN and UNION
โœ” Join execution order

Double Tap โ™ฅ๏ธ For More
โค12
SQL Detailed Roadmap
|
| | |-- Fundamentals
| |-- Introduction to Databases
| | |-- What SQL does
| | |-- Relational model
| | |-- Tables, rows, columns
| |-- Keys and Constraints
| | |-- Primary keys
| | |-- Foreign keys
| | |-- Unique and check constraints
| |-- Normalization
| | |-- 1NF, 2NF, 3NF
| | |-- ER diagrams

| | |-- Core SQL
| |-- SQL Basics
| | |-- SELECT, WHERE, ORDER BY
| | |-- GROUP BY and HAVING
| | |-- JOINS: INNER, LEFT, RIGHT, FULL
| |-- Intermediate SQL
| | |-- Subqueries
| | |-- CTEs
| | |-- CASE statements
| | |-- Aggregations
| |-- Advanced SQL
| | |-- Window functions
| | |-- Analytical functions
| | |-- Ranking, moving averages, lag and lead
| | |-- UNION, INTERSECT, EXCEPT

| | |-- Data Management
| |-- Data Types
| | |-- Numeric, text, date, JSON
| |-- Indexes
| | |-- B tree and hash indexes
| | |-- When to create indexes
| |-- Transactions
| | |-- ACID properties
| |-- Views
| | |-- Standard views
| | |-- Materialized views

| | |-- Database Design
| |-- Schema Design
| | |-- Star schema
| | |-- Snowflake schema
| |-- Fact and Dimension Tables
| |-- Constraints for clean data

| | |-- Performance Tuning
| |-- Query Optimization
| | |-- Execution plans
| | |-- Index usage
| | |-- Reducing scans
| |-- Partitioning
| | |-- Horizontal partitioning
| | |-- Sharding basics

| | |-- SQL for Analytics
| |-- KPI calculations
| |-- Cohort analysis
| |-- Funnel analysis
| |-- Churn and retention tables
| |-- Time based aggregations
| |-- Window functions for metrics

| | |-- SQL for Data Engineering
| |-- ETL Workflows
| | |-- Staging tables
| | |-- Transformations
| | |-- Incremental loads
| |-- Data Warehousing
| | |-- Snowflake
| | |-- Redshift
| | |-- BigQuery
| |-- dbt Basics
| | |-- Models
| | |-- Tests
| | |-- Lineage

| | |-- Tools and Platforms
| |-- PostgreSQL
| |-- MySQL
| |-- SQL Server
| |-- Oracle
| |-- SQLite
| |-- Cloud SQL
| |-- BigQuery UI
| |-- Snowflake Worksheets

| | |-- Projects
| |-- Build a sales reporting system
| |-- Create a star schema from raw CSV files
| |-- Design a customer segmentation query
| |-- Build a churn dashboard dataset
| |-- Optimize slow queries in a sample DB
| |-- Create an analytics pipeline with dbt

| | |-- Soft Skills and Career Prep
| |-- SQL interview patterns
| |-- Joins practice
| |-- Window function drills
| |-- Query writing speed
| |-- Git and GitHub
| |-- Data storytelling

| | |-- Bonus Topics
| |-- NoSQL intro
| |-- Working with JSON fields
| |-- Spatial SQL
| |-- Time series tables
| |-- CDC concepts
| |-- Real time analytics

| | |-- Community and Growth
| |-- LeetCode SQL
| |-- Kaggle datasets with SQL
| |-- GitHub projects
| |-- LinkedIn posts
| |-- Open source contributions

Free Resources to learn SQL

โ€ข W3Schools SQL
https://www.w3schools.com/sql/

โ€ข SQL Programming
https://whatsapp.com/channel/0029VanC5rODzgT6TiTGoa1v

โ€ข SQL Notes
https://whatsapp.com/channel/0029Vb6hJmM9hXFCWNtQX944

โ€ข Mode Analytics SQL tutorials
https://mode.com/sql-tutorial/

โ€ข Data Analytics Resources
https://t.iss.one/sqlspecialist

โ€ข HackerRank SQL practice
https://www.hackerrank.com/domains/sql

โ€ข LeetCode SQL problems
https://leetcode.com/problemset/database/

โ€ข Data Engineering Resources
https://whatsapp.com/channel/0029Vaovs0ZKbYMKXvKRYi3C

โ€ข Khan Academy SQL basics
https://www.khanacademy.org/computing/computer-programming/sql

โ€ข PostgreSQL official docs
https://www.postgresql.org/docs/

โ€ข MySQL official docs
https://dev.mysql.com/doc/

โ€ข NoSQL Resources
https://whatsapp.com/channel/0029VaxA2hTHgZWe5FpFjm3p

Double Tap โค๏ธ For More
โค5
โšก Subqueries CTEs

After mastering JOINS, the next important concept is Subqueries and CTEs. These are used when queries become complex and you need intermediate results.

๐Ÿ‘‰ Very common in data analyst interviews and real analytics queries.

๐Ÿ”น 1๏ธโƒฃ What is a Subquery?

A subquery is a query inside another SQL query. It is executed first, and its result is used by the main query.

๐ŸŽฏ Basic Syntax

SELECT column
FROM table
WHERE column = (SELECT column FROM table);


๐Ÿง  Example 1 โ€” Find Employees with Highest Salary

SELECT name, salary
FROM employees
WHERE salary = (SELECT MAX(salary) FROM employees);


Explanation:
1๏ธโƒฃ Inner query finds maximum salary
2๏ธโƒฃ Outer query finds employee with that salary

๐Ÿ”น 2๏ธโƒฃ Subquery in WHERE Clause
Most common use.

Example โ€” Employees earning more than average salary

SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);


Used heavily in analytics queries.

๐Ÿ”น 3๏ธโƒฃ Subquery in FROM Clause
Also called Derived Table.

SELECT department, AVG(avg_salary)
FROM (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
) AS dept_salary
GROUP BY department;


Used when intermediate results are required.

๐Ÿ”น 4๏ธโƒฃ EXISTS / NOT EXISTS

Used to check if a record exists in another table.

Example โ€” Customers who placed orders

SELECT name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE c.customer_id = o.customer_id
);


๐Ÿ‘‰ Returns customers with orders.

Example โ€” Customers with no orders

SELECT name
FROM customers c
WHERE NOT EXISTS (
SELECT 1
FROM orders o
WHERE c.customer_id = o.customer_id
);


โญ 5๏ธโƒฃ Common Table Expressions (CTEs)

CTEs improve query readability and structure. Defined using WITH clause.

Basic Syntax

WITH cte_name AS (
SELECT column
FROM table
)
SELECT *
FROM cte_name;


๐Ÿง  Example โ€” Average Salary by Department

WITH dept_avg AS (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
)
SELECT *
FROM dept_avg;


๐Ÿ”น 6๏ธโƒฃ Multiple CTEs

You can chain multiple CTEs.

WITH total_sales AS (
SELECT customer_id, SUM(amount) AS total
FROM orders
GROUP BY customer_id
),
top_customers AS (
SELECT *
FROM total_sales
WHERE total > 1000
)
SELECT *
FROM top_customers;


Used often in complex analytics queries.

๐Ÿง  Real Analyst Examples

Customers with above average purchases

SELECT customer_id
FROM orders
GROUP BY customer_id
HAVING SUM(amount) > (
SELECT AVG(total)
FROM (
SELECT SUM(amount) AS total
FROM orders
GROUP BY customer_id
) AS totals
);


Complex analytics often uses subqueries or CTEs.

๐Ÿš€ Mini Practice Tasks

๐ŸŽฏ Task 1 โ€” Find employees earning more than average salary

โœ” Solution

SELECT name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);


๐Ÿ’ก Explanation: Subquery calculates average salary, Outer query filters employees above average.

๐ŸŽฏ Task 2 โ€” Find customers who placed orders

โœ” Solution (Using EXISTS โญ)

SELECT name
FROM customers c
WHERE EXISTS (
SELECT 1
FROM orders o
WHERE c.customer_id = o.customer_id
);


๐Ÿ’ก Explanation: Checks if an order exists for the customer.

๐ŸŽฏ Task 3 โ€” Find departments with salary greater than company average

โœ” Solution

SELECT department, AVG(salary)
FROM employees
GROUP BY department
HAVING AVG(salary) > (SELECT AVG(salary) FROM employees);


๐Ÿ’ก Explanation: Subquery finds company average salary, HAVING filters departments above that average.

๐ŸŽฏ Task 4 โ€” Use a CTE to calculate total sales per customer

โœ” Solution

WITH customer_sales AS (
SELECT customer_id, SUM(amount) AS total_sales
FROM orders
GROUP BY customer_id
)
SELECT * FROM customer_sales;


๐Ÿ’ก Explanation: CTE calculates total sales for each customer, Main query retrieves the result.

Double Tap โ™ฅ๏ธ For More
โค9
What will this query return?

SELECT name FROM employees WHERE salary > (SELECT salary FROM employees);
Anonymous Quiz
40%
A) Employees with highest salary
43%
B) Error: Subquery returns multiple rows
14%
C) All employees
3%
D) Only first employee
What will this query output?

SELECT * FROM employees WHERE department_id IN ( SELECT department_id FROM departments );
Anonymous Quiz
76%
A) Employees with departments listed in the departments table
13%
B) All employees
6%
C) No employees
5%
D) Only department names
What is the output of this query?

WITH numbers AS ( SELECT 10 AS value UNION SELECT 20 ) SELECT SUM(value) FROM numbers;
Anonymous Quiz
11%
A) 10
18%
B) 20
46%
C) 30
25%
D) Error
What will this query return?

SELECT name FROM customers WHERE NOT EXISTS ( SELECT * FROM orders WHERE customers.customer_id = orders.customer_id );
Anonymous Quiz
23%
A) Customers who placed orders
67%
B) Customers without orders
7%
C) All customers
3%
D) Only order details
โค1
๐Ÿง  SQL Interview Question (Moderateโ€“Tricky & Duplicate Transaction Detection)
๐Ÿ“Œ

transactions(transaction_id, user_id, transaction_date, amount)

โ“ Ques :

๐Ÿ‘‰ Find users who made multiple transactions with the same amount consecutively.

๐Ÿงฉ How Interviewers Expect You to Think

โ€ข Sort transactions chronologically for each user
โ€ข Compare the current transaction amount with the previous one
โ€ข Use a window function to detect consecutive duplicates

๐Ÿ’ก SQL Solution

SELECT
user_id,
transaction_date,
amount
FROM (
SELECT
user_id,
transaction_date,
amount,
LAG(amount) OVER (
PARTITION BY user_id
ORDER BY transaction_date
) AS prev_amount
FROM transactions
) t
WHERE amount = prev_amount;

๐Ÿ”ฅ Why This Question Is Powerful

โ€ข Tests understanding of LAG() for row comparison
โ€ข Evaluates ability to identify patterns in sequential data
โ€ข Reflects real-world use cases like detecting suspicious or duplicate transactions

โค๏ธ React if you want more tricky real interview-level SQL questions ๐Ÿš€
โค11