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
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
Which operator is used when subquery returns multiple values?
Anonymous Quiz
8%
A. =
14%
B. >
58%
C. IN
20%
D. LIKE
❀4πŸ‘Ž1
What will this query return?

SELECT name FROM employees WHERE dept_id IN ( SELECT dept_id FROM departments WHERE dept_name = 'IT' );
Anonymous Quiz
6%
All employees
7%
All departments
5%
Employees with max salary
83%
Employees in IT department
❀7πŸ‘1
πŸ”₯ Now, let’s move to the next topic:

βœ… Window Functions

🧠 1. What are Window Functions?

Window functions perform calculations without grouping rows

πŸ‘‰ Difference:
β€’ GROUP BY β†’ reduces rows
β€’ Window Function β†’ keeps all rows + adds extra column

πŸ“Š Example Table

name β†’ Amit, Ravi, Neha
department β†’ IT, IT, HR
salary β†’ 60000, 70000, 40000

⚑ 2. Basic Syntax
SELECT column,
FUNCTION() OVER (PARTITION BY column ORDER BY column)
FROM table;

πŸ”₯ 3. ROW_NUMBER()

Assigns unique rank to each row

SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;

βœ” Rank employees within each department

πŸ₯‡ 4. RANK() vs DENSE_RANK()

πŸ‘‰ RANK() (skips numbers)

SELECT name, salary,
RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;

πŸ‘‰ DENSE_RANK() (no skipping)

SELECT name, salary,
DENSE_RANK() OVER (ORDER BY salary DESC) AS rank
FROM employees;

πŸ“Š Visual Difference

If salaries are 100, 90, 90, 80:
β€’ RANK() gives: 1, 2, 2, 4
β€’ DENSE_RANK() gives: 1, 2, 2, 3

⚑ 5. PARTITION BY (Very Important)

πŸ‘‰ Splits data into groups (like GROUP BY but without collapsing rows)

SELECT department, name, salary,
AVG(salary) OVER (PARTITION BY department) AS avg_salary
FROM employees;

βœ” Shows avg salary per department for each row

🎯 6. Practice Tasks
1. Rank employees by salary
2. Rank employees within each department
3. Find highest salary per department
4. Add average salary column per department
5. Find second highest salary using window function

βœ… Practice Tasks Solution

βœ… 1. Rank employees by salary

SELECT name, salary,
ROW_NUMBER() OVER (ORDER BY salary DESC) AS rank
FROM employees;

βœ… 2. Rank employees within each department

SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;

βœ… 3. Find highest salary per department

SELECT name, department, salary
FROM (
SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
FROM employees
) t
WHERE rn = 1;

βœ… 4. Add average salary column per department

SELECT name, department, salary,
AVG(salary) OVER (PARTITION BY department) AS avg_salary
FROM employees;

βœ… 5. Find second highest salary using window function

SELECT name, salary
FROM (
SELECT name, salary,
DENSE_RANK() OVER (ORDER BY salary DESC) AS rnk
FROM employees
) t
WHERE rnk = 2;

⚑ Mini Challenge πŸ”₯
πŸ‘‰ Get top 2 highest paid employees in each department

⚑ Mini Challenge Solution πŸ”₯

SELECT name, department, salary
FROM (
SELECT name, department, salary,
ROW_NUMBER() OVER (PARTITION BY department ORDER BY salary DESC) AS rn
FROM employees
) t
WHERE rn <= 2;

πŸ”₯ Pro Tip:
β€’ Use ROW_NUMBER() β†’ unique ranking
β€’ Use DENSE_RANK() β†’ handle ties

Double Tap ❀️ For More
❀23
πŸ”₯ 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
❀18πŸ‘1
βœ…Skills Required to Become a Data Analyst πŸ“Š

🧠 ANALYTICAL THINKING
1. Problem Solving
2. Logical Reasoning
3. Pattern Recognition
4. Critical Thinking
5. Decision Making
6. Root Cause Analysis
7. Attention to Detail
8. Business Understanding

πŸ“Š DATA HANDLING
1. Data Cleaning
2. Data Transformation
3. Data Validation
4. Handling Missing Values
5. Data Wrangling
6. Data Integration
7. Data Formatting
8. Data Quality Checks

πŸ—„οΈ SQL SKILLS
1. Writing Queries
2. Joins (INNER, LEFT, RIGHT)
3. Aggregations (SUM, COUNT, AVG)
4. Subqueries
5. CTEs
6. Window Functions
7. Indexing Basics
8. Database Optimization

🐍 PYTHON / R
1. Pandas / dplyr
2. NumPy
3. Data Cleaning Scripts
4. EDA (Exploratory Data Analysis)
5. Visualization Libraries
6. Automation
7. Statistical Analysis
8. Basic Machine Learning

πŸ“Š DATA VISUALIZATION
1. Dashboard Creation
2. Chart Selection
3. Storytelling with Data
4. Power BI / Tableau
5. KPI Design
6. Report Building
7. Interactive Visuals
8. Data Presentation

πŸ“ˆ STATISTICS
1. Mean, Median, Mode
2. Probability Basics
3. Hypothesis Testing
4. Correlation
5. Regression
6. Distribution
7. Sampling Techniques
8. A/B Testing

πŸ’Ό BUSINESS SKILLS
1. Requirement Understanding
2. Stakeholder Communication
3. Business Metrics
4. Domain Knowledge
5. Problem Framing
6. Reporting Insights
7. Decision Support
8. Documentation

βš™οΈ TOOLS  TECHNOLOGIES
1. Excel
2. SQL Tools (MySQL, PostgreSQL)
3. Power BI / Tableau
4. Python / R
5. Google Sheets
6. Jupyter Notebook
7. Git (Basics)
8. Cloud Basics (AWS / Azure)

πŸ’¬ Tap ❀️ for more
Please open Telegram to view this post
VIEW IN TELEGRAM
❀35πŸ‘8
Which keyword is used to create a CTE?
Anonymous Quiz
27%
A. CREATE
14%
B. TEMP
56%
C. WITH
3%
D. SELECT
❀1
❀2πŸ‘2
Now, let’s move to the next topic:

Views (Virtual Tables)

🧠 1. What is a VIEW?

A VIEW is a virtual table based on a SQL query

πŸ‘‰ It does NOT store data
πŸ‘‰ It stores the query

Think like this πŸ‘‡
πŸ‘‰ β€œSaved SQL query β†’ reuse anytime”

⚑ 2. Why Use Views?

- Simplify complex queries
- Reuse logic
- Hide sensitive data
- Improve readability

⚑ 3. Create a VIEW

CREATE VIEW high_salary_emp AS
SELECT name, salary
FROM employees
WHERE salary > 50000;

πŸ” 4. Use a VIEW

SELECT FROM high_salary_emp;

βœ” Works like a normal table

πŸ”„ 5. Update a VIEW

CREATE OR REPLACE VIEW high_salary_emp AS
SELECT name, salary, department
FROM employees
WHERE salary > 50000;

❌ 6. Drop a VIEW

DROP VIEW high_salary_emp;

🎯 7. Real Example

πŸ‘‰ Create view for department-wise average salary

CREATE VIEW dept_avg_salary AS
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

πŸ‘‰ Use it:
SELECT FROM dept_avg_salary;

⚑ 8. Important Points

- View does NOT store data
- Changes in table β†’ reflect in view
- Can be used like a table

🎯 9. Practice Tasks

1. Create view for employees with salary > 40k
2. Create view for IT department employees
3. Create view for avg salary per department
4. Query data using created views
5. Drop a view

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

βœ… 1. Create view for employees with salary > 40k
CREATE VIEW high_salary_emp AS
SELECT
FROM employees
WHERE salary > 40000;

βœ… 2. Create view for IT department employees
CREATE VIEW it_employees AS
SELECT
FROM employees
WHERE department = 'IT';

βœ… 3. Create view for avg salary per department
CREATE VIEW dept_avg_salary AS
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department;

βœ… 4. Query data using created views
SELECT FROM high_salary_emp;

SELECT FROM it_employees;

SELECT FROM dept_avg_salary;

βœ… 5. Drop a view
DROP VIEW high_salary_emp;

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Create a view to show top 3 highest salary employees

⚑ Mini Challenge Solution

CREATE VIEW top_3_salary AS
SELECT
FROM employees
ORDER BY salary DESC
LIMIT 3;

πŸ‘‰ Use the view:

SELECT FROM top_3_salary;

πŸ”₯ Pro Tip:
Views are heavily used in:
πŸ‘‰ Dashboards
πŸ‘‰ Reporting systems
πŸ‘‰ Data analytics projects

Because they simplify complex SQL πŸ’―

πŸ‘‰ Table β†’ stores data
πŸ‘‰ View β†’ stores query

Double Tap ❀️ For More
❀16
Does a VIEW store actual data?
Anonymous Quiz
24%
A. Yes
56%
B. No
6%
C. Sometimes
14%
D. Only in MySQL
Which command is used to create a VIEW?
Anonymous Quiz
6%
A. MAKE VIEW
86%
B. CREATE VIEW
4%
C. NEW VIEW
4%
D. ADD VIEW
❀4
Now, let’s move to the next topic:

Indexes πŸš€

🧠 1. What is an INDEX?

An INDEX is used to make data retrieval faster

πŸ‘‰ Think like a book πŸ“š
- Without index β†’ scan every page
- With index β†’ jump directly to topic

Same happens in databases πŸ’―

⚑ 2. Why Use Indexes?

βœ” Faster SELECT queries
βœ” Faster searching
βœ” Better performance on large tables

❌ But:
- Uses extra storage
- INSERT/UPDATE become slightly slower

πŸ“Š Visual Understanding

⚑ 3. Create an INDEX
CREATE INDEX idx_salary
ON employees(salary);
πŸ‘‰ Creates index on salary column

πŸ” 4. Query Using Indexed Column
SELECT FROM employees
WHERE salary > 50000;
βœ” Faster because of index

❌ 5. Drop an INDEX
DROP INDEX idx_salary ON employees;

πŸ”₯ 6. Primary Key Automatically Creates Index
CREATE TABLE employees (
emp_id INT PRIMARY KEY,
name VARCHAR(50)
);

βœ” PRIMARY KEY β†’ automatically indexed

⚑ 7. Types of Indexes

- Primary Index: Created on primary key
- Unique Index: Prevent duplicate values
- Composite Index: Index on multiple columns

🎯 8. Composite Index Example
CREATE INDEX idx_dept_salary
ON employees(department, salary);

βœ” Useful when filtering both columns together

🎯 9. Practice Tasks
1. Create index on employee name
2. Create index on department column
3. Create composite index on department + salary
4. Query employees using indexed column
5. Drop created index

⚑ Mini Challenge πŸ”₯

πŸ‘‰ Create a unique index on email column

πŸ”₯ Indexes improve READ speed but may slow down INSERT / UPDATE

Double Tap ❀️ For More
❀17πŸ‘4