Data Analytics
109K subscribers
133 photos
2 files
837 links
Perfect channel to learn Data Analytics

Learn SQL, Python, Alteryx, Tableau, Power BI and many more

For Promotions: @coderfun @love_data
Download Telegram
Which operator is used to combine multiple conditions?
Anonymous Quiz
51%
A. JOIN
43%
B. AND
3%
C. SELECT
2%
D. ORDER
❀3
Now, Let’s move to the next topic of the SQL Roadmap:

ORDER BY LIMIT

🧠 1. ORDER BY (Sorting Data)

ORDER BY is used to sort your result.

πŸ‘‰ Syntax

SELECT column_name FROM table_name
ORDER BY column_name;


πŸ”Ή Ascending Order (Default)

SELECT * FROM employees
ORDER BY salary ASC;


βœ” Lowest salary β†’ highest

πŸ”Ή Descending Order

SELECT * FROM employees
ORDER BY salary DESC;


βœ” Highest salary β†’ lowest

πŸ’‘ 2. Sorting Multiple Columns

SELECT * FROM employees
ORDER BY department ASC, salary DESC;


πŸ‘‰ First sorts by department
πŸ‘‰ Then salary within each department

🎯 3. LIMIT (Control Output Size)

LIMIT is used to restrict the number of rows.

πŸ‘‰ Syntax

SELECT * FROM table_name
LIMIT number;


πŸ‘‰ Example

SELECT * FROM employees
LIMIT 5;


βœ” Returns only the first 5 rows

⚑ 4. Using ORDER BY LIMIT

πŸ‘‰ Top 5 highest salaries

SELECT * FROM employees
ORDER BY salary DESC
LIMIT 5;


πŸ‘‰ Lowest 3 salaries

SELECT * FROM employees
ORDER BY salary ASC
LIMIT 3;


🎯 5. Practice Tasks
1. Show all employees sorted by salary (ascending)
2. Show all employees sorted by salary (descending)
3. Get top 3 highest paid employees
4. Get lowest 2 salary employees
5. Sort employees by department and salary

βœ… Practice Task Solution

βœ… 1. Show all employees sorted by salary (ascending)

SELECT * FROM employees
ORDER BY salary ASC;


βœ… 2. Show all employees sorted by salary (descending)

SELECT * FROM employees
ORDER BY salary DESC;


βœ… 3. Get top 3 highest paid employees

SELECT * FROM employees
ORDER BY salary DESC
LIMIT 3;


βœ… 4. Get lowest 2 salary employees

SELECT * FROM employees
ORDER BY salary ASC
LIMIT 2;


βœ… 5. Sort employees by department and salary

SELECT * FROM employees
ORDER BY department ASC, salary DESC;


πŸ‘‰ First sorts by department
πŸ‘‰ Then highest salary inside each department

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Get the 2nd highest salary employee.

⚑ Mini Challenge Solution πŸ”₯

βœ” Method 1 (Using LIMIT + OFFSET)

SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1 OFFSET 1;


βœ” Method 2 (Alternative way)

SELECT * FROM employees
ORDER BY salary DESC
LIMIT 1, 1;


πŸ”₯ Pro Tip:
If you understand OFFSET β†’ you can get Top N, 2nd highest, 3rd highest easily.

⚑ Double Tap ❀️ For More
❀23
πŸ”₯ Let’s move to the next topic in the SQL Roadmap:

βœ… GROUP BY & Aggregation Functions

🧠 1. What is GROUP BY?

GROUP BY is used to group rows with same values

πŸ‘‰ It helps you summarize data

πŸ’‘ Example Table: employees
name department salary
Amit IT 60000
Neha HR 40000
Ravi IT 70000
Sara HR 50000

πŸ‘‰ Without GROUP BY

SELECT AVG(salary) FROM employees;

βœ” Gives overall average

πŸ‘‰ With GROUP BY

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

βœ” Gives average salary per department

⚑ 2. Aggregation Functions

These functions perform calculations on data

πŸ”Ή COUNT() β†’ number of rows

SELECT COUNT() FROM employees;

πŸ”Ή SUM() β†’ total

SELECT SUM(salary) FROM employees;

πŸ”Ή AVG() β†’ average

SELECT AVG(salary) FROM employees;

πŸ”Ή MIN() β†’ smallest value

SELECT MIN(salary) FROM employees;

πŸ”Ή MAX() β†’ largest value

SELECT MAX(salary) FROM employees;

🎯 3. GROUP BY + Aggregation

πŸ‘‰ Count employees in each department

SELECT department, COUNT()
FROM employees
GROUP BY department;

πŸ‘‰ Total salary per department

SELECT department, SUM(salary)
FROM employees
GROUP BY department;

πŸ‘‰ Highest salary per department

SELECT department, MAX(salary)
FROM employees
GROUP BY department;

🚨 4. Important Rule (Interview Favorite)

πŸ‘‰ Every column in SELECT must be:
- Either inside GROUP BY
- Or used with aggregation function

❌ Wrong:

SELECT name, AVG(salary) FROM employees;

βœ… Correct:

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

🎯 5. Practice Tasks
1. Count total employees
2. Find total salary of all employees
3. Find average salary per department
4. Find maximum salary in each department
5. Count employees in each department

βœ… Practice Task Solution

βœ… 1. Count total employees

SELECT COUNT() FROM employees;


βœ… 2. Find total salary of all employees

SELECT SUM(salary) FROM employees;


βœ… 3. Find average salary per department

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


βœ… 4. Find maximum salary in each department

SELECT department, MAX(salary)
FROM employees
GROUP BY department;


βœ… 5. Count employees in each department

SELECT department, COUNT()
FROM employees
GROUP BY department;

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Find department with highest average salary

⚑ Mini Challenge Solution πŸ”₯

SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
ORDER BY avg_salary DESC
LIMIT 1;

⚑ Double Tap ❀️ For More
❀22
Now, let’s move to the next topic of SQL Roadmap:

βœ… HAVING Clause

🧠 1. What is HAVING?

HAVING is used to filter grouped data

πŸ‘‰ Think like this:
- WHERE β†’ filters rows (before grouping)
- HAVING β†’ filters groups (after grouping)

⚑ 2. WHERE vs HAVING

Works on
- WHERE: Rows
- HAVING: Groups

Used with
- WHERE: SELECT
- HAVING: GROUP BY

Can use aggregates?
- WHERE: ❌ No
- HAVING: βœ… Yes

πŸ’‘ 3. Basic Syntax

SELECT column, AGG_FUNCTION(column)
FROM table_name
GROUP BY column
HAVING condition;

🎯 4. Examples (Very Important)

πŸ‘‰ Example 1: Departments with more than 2 employees

SELECT department, COUNT() AS total_emp
FROM employees
GROUP BY department
HAVING COUNT() > 2;

πŸ‘‰ Example 2: Departments with average salary > 50k

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

⚑ 5. WHERE + HAVING Together

SELECT department, COUNT() AS total_emp
FROM employees
WHERE salary > 30000
GROUP BY department
HAVING COUNT() > 2;

πŸ‘‰ Step-by-step:
1. WHERE β†’ filters employees with salary > 30k
2. GROUP BY β†’ groups by department
3. HAVING β†’ keeps only groups with > 2 employees

🎯 6. Practice Tasks
1. Find departments having more than 3 employees
2. Find departments with average salary > 60k
3. Count employees per department where salary > 40k
4. Show departments with total salary > 1,00,000
5. Find departments with minimum salary > 30k

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Find departments having more than 2 employees AND avg salary > 50k

Double Tap ❀️ For Practice Task Solution
❀18
βœ… Business Intelligence (BI) Acronyms You Should Know πŸ“ŠπŸ’‘

BI β†’ Business Intelligence
ETL β†’ Extract, Transform, Load
ELT β†’ Extract, Load, Transform
DWH β†’ Data Warehouse
OLAP β†’ Online Analytical Processing
OLTP β†’ Online Transaction Processing
KPI β†’ Key Performance Indicator
SLA β†’ Service Level Agreement
SCD β†’ Slowly Changing Dimension
CDC β†’ Change Data Capture
MDM β†’ Master Data Management
EAV β†’ Entity Attribute Value
FACT β†’ Fact Table
DIM β†’ Dimension Table
STAR β†’ Star Schema
SNOWFLAKE β†’ Snowflake Schema
MTD β†’ Month To Date
QTD β†’ Quarter To Date
YTD β†’ Year To Date
MoM β†’ Month over Month
YoY β†’ Year over Year
ROI β†’ Return on Investment
TAT β†’ Turn Around Time

πŸ’‘Don’t just expand acronyms β€” explain where they’re used (ETL in pipelines, KPIs in dashboards, OLAP in analysis).

πŸ’¬ Tap ❀️ for more!
❀18πŸ‘2πŸ”₯1πŸ₯°1
Which clause is used before GROUP BY?
Anonymous Quiz
28%
A. HAVING
19%
B. ORDER BY
50%
C. WHERE
2%
D. LIMIT
What will this query return?

SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 2;
Anonymous Quiz
82%
Departments with more than 2 employees
13%
Departments with less than 2 employees
4%
All departments
1%
Highest salary
❀5
What does this query return?

SELECT department, AVG(salary) FROM employees GROUP BY department HAVING AVG(salary) > 50000;
Anonymous Quiz
5%
All departments
92%
Departments with avg salary > 50k
3%
Max salary
0%
Min salary
❀8
πŸ”₯Now, let’s move to the most important SQL topic β€” JOINS πŸ’―πŸ”₯

🧠 1. What is a JOIN?

JOIN is used to combine data from multiple tables

πŸ‘‰ If data is stored in different tables β†’ JOIN helps you connect them

πŸ“Š Example Tables

πŸ‘¨β€πŸ’Ό employees

emp_id name dept_id

1 Amit 101
2 Neha 102
3 Ravi 101

🏒 departments

dept_id dept_name

101 IT
102 HR

πŸ”— 2. INNER JOIN (Most Used πŸ”₯)

πŸ‘‰ Returns only matching records

SELECT e.name, d.dept_name
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.dept_id;

βœ” Only employees with valid department

⬅️ 3. LEFT JOIN

πŸ‘‰ Returns all records from left table + matched from right

SELECT e.name, d.dept_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id;

βœ” Even if department is missing β†’ employee will still show

➑️ 4. RIGHT JOIN

πŸ‘‰ Returns all records from right table + matched from left

SELECT e.name, d.dept_name
FROM employees e
RIGHT JOIN departments d
ON e.dept_id = d.dept_id;

πŸ”„ 5. FULL JOIN

πŸ‘‰ Returns all records from both tables

SELECT e.name, d.dept_name
FROM employees e
FULL JOIN departments d
ON e.dept_id = d.dept_id;

(Note: Not supported in MySQL directly β€” use UNION instead)

⚑ 6. Quick Summary

β€’ INNER -> Only matching rows
β€’ LEFT -> All left + matched right
β€’ RIGHT -> All right + matched left
β€’ FULL -> Everything

🎯 7. Practice Tasks

1. Get employee name with department name

2. Show all employees even if no department

3. Show all departments even if no employees

4. Find employees without department

5. Count employees per department (using JOIN)

πŸ”₯ Practice Task Solutions πŸ‘‡

βœ… 1. Get employee name with department name (INNER JOIN)

SELECT e.name, d.dept_name
FROM employees e
INNER JOIN departments d
ON e.dept_id = d.dept_id;

βœ… 2. Show all employees even if no department (LEFT JOIN)

SELECT e.name, d.dept_name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id;

βœ… 3. Show all departments even if no employees (RIGHT JOIN)

SELECT e.name, d.dept_name
FROM employees e
RIGHT JOIN departments d
ON e.dept_id = d.dept_id;

πŸ‘‰ (Alternative using LEFT JOIN β€” interview friendly)

SELECT e.name, d.dept_name
FROM departments d
LEFT JOIN employees e
ON e.dept_id = d.dept_id;

βœ… 4. Find employees without department

SELECT e.name
FROM employees e
LEFT JOIN departments d
ON e.dept_id = d.dept_id
WHERE d.dept_id IS NULL;

βœ… 5. Count employees per department (using JOIN)

SELECT d.dept_name, COUNT(e.emp_id) AS total_emp
FROM departments d
LEFT JOIN employees e
ON d.dept_id = e.dept_id
GROUP BY d.dept_name;

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Find departments with no employees

⚑ Mini Challenge Solution πŸ‘‡

SELECT d.dept_name  
FROM departments d
LEFT JOIN employees e
ON d.dept_id = e.dept_id
WHERE e.emp_id IS NULL;


Double Tap ❀️ For More
❀23πŸ‘1
❀1
Find departments with NO employees β€” which is correct?
Anonymous Quiz
12%
SELECT d.name FROM departments d INNER JOIN employees e ON d.dept_id = e.dept_id;
77%
SELECT d.name FROM departments d LEFT JOIN employees e ON d.dept_id = e.dept_id WHERE e.id IS NULL;
3%
SELECT * FROM employees;
8%
SELECT COUNT(*) FROM departments;
What is the difference?

-- Query 1 SELECT COUNT(*) FROM employees e INNER JOIN departments d ON e.dept_id = d.dept_id; -- Query 2 SELECT COUNT(*) FROM employees e LEFT JOIN departments d ON e.dept_id = d.dept_id;
Anonymous Quiz
34%
Query 1 ≀ Query 2
38%
Query 1 β‰₯ Query 2
20%
Both same
7%
None of the above
What will this query return?

SELECT COUNT(*) FROM employees e LEFT JOIN departments d ON e.dept_id = d.dept_id;
Anonymous Quiz
24%
Only matched rows
56%
Total employees count
17%
Total departments
2%
Employees name
❀3
What will this query return?

SELECT e.name, d.dept_name FROM employees e LEFT JOIN departments d ON e.dept_id = d.dept_id WHERE d.dept_name = 'IT';
Anonymous Quiz
7%
All employees
10%
All departments
13%
Employees without department
69%
Only employees in IT
❀8
πŸ”₯ Now, let’s move to the next topic of SQL Roadmap

βœ… Subqueries (Nested Queries)

🧠 1. What is a Subquery?

A subquery is a query inside another query

πŸ‘‰ Think like this:
β€œFirst get some data β†’ then use that result in another query”

πŸ“Š Basic Example

πŸ‘‰ Find employees earning above average salary
SELECT FROM employees
WHERE salary > (
SELECT AVG(salary) FROM employees
);

πŸ‘‰ Inner query β†’ gives average salary
πŸ‘‰ Outer query β†’ filters employees

⚑ 2. Types of Subqueries

πŸ”Ή Single Row Subquery

Returns only one value

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

πŸ”Ή Multiple Row Subquery

Returns multiple values
SELECT FROM employees
WHERE dept_id IN (
SELECT dept_id FROM departments
);

🎯 3. Subquery with IN

SELECT name
FROM employees
WHERE dept_id IN (
SELECT dept_id FROM departments WHERE dept_name = 'IT'
);

βœ” Finds employees in IT department

⚑ 4. Subquery with EXISTS

SELECT name
FROM employees e
WHERE EXISTS (
SELECT 1 FROM departments d
WHERE e.dept_id = d.dept_id
);

βœ” Checks if matching record exists

🚨 5. Important Difference

IN ->
Compares values & Slower with large data

EXISTS -> Checks existence & Faster with large data

🎯 6. Practice Tasks

1. Find employees with salary > average salary
2. Find employees in IT department using subquery
3. Get departments that have employees
4. Find employees with max salary
5. Get employees not in HR department

πŸ”₯ Here are the solutions for Subqueries practice tasks

βœ… 1. Find employees with salary > average salary

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

βœ… 2. Find employees in IT department using subquery

SELECT FROM employees
WHERE dept_id IN (
SELECT dept_id FROM departments
WHERE dept_name = 'IT'
);

βœ… 3. Get departments that have employees

SELECT
FROM departments
WHERE dept_id IN (
SELECT dept_id FROM employees
);

πŸ‘‰ Alternative (using EXISTS):

SELECT FROM departments d
WHERE EXISTS (
SELECT 1 FROM employees e
WHERE d.dept_id = e.dept_id
);

βœ… 4. Find employees with max salary

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

βœ… 5. Get employees not in HR department

SELECT FROM employees
WHERE dept_id NOT IN (
SELECT dept_id FROM departments
WHERE dept_name = 'HR'
);


⚑ Mini Challenge πŸ”₯

πŸ‘‰ Find employees earning second highest salary using subquery

⚑ Mini Challenge Solution πŸ”₯

SELECT
FROM employees
WHERE salary = (
SELECT MAX(salary)
FROM employees
WHERE salary < (
SELECT MAX(salary) FROM employees
)
);

πŸ”₯ Pro Tip:
If question says:
πŸ‘‰ β€œabove average”, β€œmax”, β€œsecond highest”
β†’ Think Subquery instantly πŸ’―

Double Tap ❀️ For More
❀15
What will this query return?

SELECT * FROM employees WHERE salary > ( SELECT AVG(salary) FROM employees );
Anonymous Quiz
6%
Employees with lowest salary
91%
Employees with salary above average
4%
All employees
❀2