TGViewer
Data Analytics Data Analytics @sqlspecialist ยท 111K subscribers
Post #2753 6.42K
๐Ÿ”ฅ Now, letโ€™s move to the next topic:

โœ… CTE (Common Table Expressions)

๐Ÿง  1. What is a CTE?

A CTE (Common Table Expression) is a temporary result set
๐Ÿ‘‰ defined using WITH
๐Ÿ‘‰ used to simplify complex queries

Think like this ๐Ÿ‘‡
๐Ÿ‘‰ โ€œCreate a temporary table โ†’ use it in your queryโ€

โšก 2. Basic Syntax
WITH cte_name AS (
SELECT ...
)
SELECT * FROM cte_name;


๐ŸŽฏ 3. Simple Example

๐Ÿ‘‰ Get employees with salary > 50k
WITH high_salary AS (
SELECT * FROM employees
WHERE salary > 50000
)
SELECT * FROM high_salary;

โœ” Makes query more readable

๐Ÿ”ฅ 4. CTE with Aggregation

๐Ÿ‘‰ Average salary per department
WITH dept_avg AS (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
)
SELECT * FROM dept_avg;


โšก 5. CTE vs Subquery

CTE ->
More readable, Reusable Better for complex queries

Subquery -> Hard to read Not reusable

๐ŸŽฏ 6. Real Example (Interview Level)

๐Ÿ‘‰ Employees earning above department average
WITH dept_avg AS (
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
)

SELECT e.name, e.salary, e.department
FROM employees e
JOIN dept_avg d
ON e.department = d.department
WHERE e.salary > d.avg_salary;


๐ŸŽฏ 7. Practice Tasks

1. Create CTE for employees with salary > 40k
2. Find average salary using CTE
3. Get employees above average salary using CTE
4. Count employees per department using CTE
5. Find highest salary per department using CTE

๐Ÿ”ฅ Here are the solutions for CTE practice tasks

โœ… 1. Create CTE for employees with salary > 40k
WITH high_salary AS (
SELECT * FROM employees
WHERE salary > 40000
)
SELECT * FROM high_salary;


โœ… 2. Find average salary using CTE
WITH avg_sal AS (
SELECT AVG(salary) AS avg_salary FROM employees
)
SELECT * FROM avg_sal;


โœ… 3. Get employees above average salary using CTE
WITH avg_sal AS (
SELECT AVG(salary) AS avg_salary FROM employees
)
SELECT e.*
FROM employees e, avg_sal a
WHERE e.salary > a.avg_salary;

๐Ÿ‘‰ Alternative (JOIN style):
WITH avg_sal AS (
SELECT AVG(salary) AS avg_salary FROM employees
)
SELECT e.*
FROM employees e
JOIN avg_sal a
ON e.salary > a.avg_salary;


โœ… 4. Count employees per department using CTE
WITH dept_count AS (
SELECT department, COUNT(*) AS total_emp
FROM employees
GROUP BY department
)
SELECT * FROM dept_count;


โœ… 5. Find highest salary per department using CTE
WITH max_sal AS (
SELECT department, MAX(salary) AS max_salary
FROM employees
GROUP BY department
)
SELECT * FROM max_sal;


โšก Mini Challenge ๐Ÿ”ฅ

๐Ÿ‘‰ Find top 2 highest salary employees per department using CTE

โšก Mini Challenge Solution ๐Ÿ”ฅ
WITH ranked_emp AS (
SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
FROM employees
)
SELECT * FROM ranked_emp
WHERE rn <= 2;


๐Ÿ”ฅ Pro Tip:
Whenever query looks messy:
๐Ÿ‘‰ Replace subquery with CTE

Double Tap โค๏ธ For More
  • โค 19
  • ๐Ÿ‘ 1
More from @sqlspecialist
  1. Oct 9, 2026โ€œHere, the data is sorted by the second column in descending order and the first five rowsโ€ฆ
  2. Oct 9, 2026๐Ÿ“Š Data Analyst Interview Series โ€” Part 6 Guys, let's continue our Data Analyst Interviewโ€ฆ
  3. Oct 9, 2026๐Ÿ‡ฎ๐Ÿ‡ณ ๐—š๐—ข๐—ฉ๐—˜๐—ฅ๐—ก๐— ๐—˜๐—ก๐—ง ๐—ข๐—™ ๐—œ๐—ก๐——๐—œ๐—” โ€” ๐—”๐—œ๐—–๐—ง๐—˜ ๐—œ๐—ก๐—ง๐—˜๐—ฅ๐—ก๐—ฆ๐—›๐—œ๐—ฃ๐—ฆ ๐Ÿฎ๐Ÿฌ๐Ÿฎ๐Ÿฒ ๐Ÿš€โ€ฆ
  4. Oct 8, 2026๐ŸŽ“ ๐— ๐—ถ๐—ฐ๐—ฟ๐—ผ๐˜€๐—ผ๐—ณ๐˜ ๐—™๐—ฅ๐—˜๐—˜ ๐—–๐—ผ๐˜‚๐—ฟ๐˜€๐—ฒ๐˜€ ๐˜„๐—ถ๐˜๐—ต ๐—–๐—ฒ๐—ฟ๐˜๐—ถ๐—ณ๐—ถ๐—ฐ๐—ฎ๐˜๐—ฒ๐˜€! ๐Ÿš€๐Ÿ”ฅ Upgrโ€ฆ
  5. Oct 7, 2026๐Ÿ“Š Kandinsky 6.0 Video: AI-Powered Content Creation for Analysts The new Kandinsky 6.0 Vidโ€ฆ
  6. Oct 7, 2026Alternatively, depending on the Excel version and requirement, I could use functions suchโ€ฆ
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 โ†’