Lesson 08 � Data Analysis

DATA KO
SUMMARIZE KARO.

School mein average marks, shop mein total sales, website pe daily visitors � sab aggregate functions se nikalte hain. GROUP BY se category-wise analysis hoti hai. Yeh data analysis ki foundation hai.

? 22 min✓ Intermediate✓ Prerequisite: DELETE

WHY: aggregate functions kyun?

Raw data mein se insights nikalna � yeh data analyst ka kaam hai. Aggregate functions single row nahi, poore dataset ko summarize karte hain. "Kitne students hain?" � COUNT se pata chalega. "Average kitna hai?" � AVG batayega. "Sabse zyada marks kisne liye?" � MAX se dikhega.

COUNT

Kitne rows hain table mein. COUNT(*) sab rows ginti hai, COUNT(DISTINCT col) unique values count karta hai.

SUM & AVG

SUM se total aur AVG se average nikalta hai. Dono numeric columns par kaam karte hain � marks ka total, salary ka average.

MIN & MAX

Sabse chhota aur sabse bada value. Kisi bhi column mein minimum aur maximum dhundna � fastest marks, oldest student.

GROUP BY

Category-wise grouping � har course ke students count karo, har department ka average salary nikalo. GROUP BY se data meaningful hota hai.

HOW: COUNT kaise use karein

Count sabse basic aggregate function hai. Kitni rows hain, kitne unique students hain, kitne courses available hain � sab COUNT se hota hai.

sql
-- Kitne rows hain students table mein
SELECT COUNT(*) FROM students;

-- Kitne unique courses hain
SELECT COUNT(DISTINCT course) FROM students;

-- Kitne students ko marks mila hai (NULL nahi)
SELECT COUNT(marks) FROM students;

-- Alias ke saath
SELECT COUNT(*) AS total_students FROM students;
Mental model: COUNT jaise almirah mein kitni kitabein hain count karna. COUNT(*) sab kitabein ginta hai, COUNT(DISTINCT author) kitne alag-alag authors hain.

SUM & AVG: total aur average

Numeric columns ka total aur average nikalna � yeh business analysis mein sabse zyada use hota hai. "Total kitna sales hua?" � SUM. "Average marks kitne hain?" � AVG.

sql
-- Total marks sabka
SELECT SUM(marks) FROM students;

-- Average marks
SELECT AVG(marks) FROM students;

-- Course-wise total aur average
SELECT course, SUM(marks) AS total, AVG(marks) AS average
FROM students
GROUP BY course;

-- ROUND se average ko 2 decimal tak
SELECT course, ROUND(AVG(marks), 2) AS avg_marks
FROM students
GROUP BY course;
Pro tip: AVG mein NULL values automatically skip hoti hain. Agar 10 students hain aur 2 ke marks NULL hain, toh AVG sirf 8 students ka calculate karega.

MIN & MAX: chhota aur bada value

Kisi bhi column mein sabse kam aur sabse zyada value dhundna. "Sabse kam marks kitne aaye?" � MIN. "Sabse zyada salary kiski hai?" � MAX.

sql
-- Minimum marks
SELECT MIN(marks) FROM students;

-- Maximum marks
SELECT MAX(marks) FROM students;

-- Dono ek saath
SELECT MIN(marks) AS lowest, MAX(marks) AS highest FROM students;

-- Course-wise min aur max
SELECT course, MIN(marks) AS min_marks, MAX(marks) AS max_marks
FROM students
GROUP BY course;

GROUP BY: category-wise grouping

GROUP BY sabse powerful feature hai data analysis ka. Isse data ko categories mein divide karke har category ka summary nikal sakte ho. "Har course mein kitne students hain?" � GROUP BY se hota hai.

sql
-- Course-wise student count
SELECT course, COUNT(*) AS students
FROM students
GROUP BY course;

-- Course-wise average marks
SELECT course, AVG(marks) AS avg_marks
FROM students
GROUP BY course;

-- Multiple columns se grouping
SELECT course, age, COUNT(*) AS count
FROM students
GROUP BY course, age;

-- ORDER BY ke saath � highest average pehle
SELECT course, AVG(marks) AS avg_marks
FROM students
GROUP BY course
ORDER BY avg_marks DESC;
Mental model: GROUP BY jaise sab students ko apne-apne course mein baitha dena. Phir har course ka alag se count, average, total nikalna. Har group ek row ban jata hai result mein.

HAVING: filtered groups

WHERE rows filter karta hai, HAVING groups filter karta hai. "Sirf woh courses dikhao jinke average marks 80 se zyada hain" � yeh HAVING se hota hai.

sql
-- Courses jinke average marks 80 se zyada hain
SELECT course, COUNT(*) AS students, AVG(marks) AS avg_marks
FROM students
GROUP BY course
HAVING AVG(marks) > 80;

-- Courses jismein 5 se zyada students hain
SELECT course, COUNT(*) AS students
FROM students
GROUP BY course
HAVING COUNT(*) > 5;

-- WHERE aur HAVING dono
SELECT course, AVG(marks) AS avg_marks
FROM students
WHERE age > 18
GROUP BY course
HAVING AVG(marks) > 75;
Order yaad rakho: WHERE pehle aata hai (rows filter), phir GROUP BY (groups banata hai), phir HAVING (groups filter karta hai), phir ORDER BY (sort karta hai). Yeh sequence galat nahi hona chahiye!

Try it: SQL query likho

Neeche ka editor SQL jaisa hai. Yahan apni query likho aur "Run Query" dabao. Screen par sample results dikhenge � yeh browser-based simulation hai, real database nahi.

SQL playgroundSample data se results dikhenge
Run Query dabayein

Aggregate functions ki summary

Har aggregate function ka apna kaam hai. Ek table mein saare functions ek saath use kar sakte ho � comprehensive analysis hoti hai.

sql
-- Comprehensive summary
SELECT
 COUNT(*) AS total_students,
 COUNT(DISTINCT course) AS total_courses,
 SUM(marks) AS total_marks,
 AVG(marks) AS average_marks,
 MIN(marks) AS lowest_marks,
 MAX(marks) AS highest_marks
FROM students;

-- Course-wise comprehensive
SELECT
 course,
 COUNT(*) AS students,
 SUM(marks) AS total_marks,
 ROUND(AVG(marks), 2) AS avg_marks,
 MIN(marks) AS min_marks,
 MAX(marks) AS max_marks
FROM students
GROUP BY course
ORDER BY avg_marks DESC;

Quick check

Ek query likho jo course-wise average marks nikale � har course ka average marks alag se dikhao.

SELECT mein course aur AVG(marks) likho, phir FROM students aur GROUP BY course lagao.

Common beginner mistakes

Aggregate Functions complete?

Ab JOINs par chalo � tables ko milana seekho. Data analysis mein multiple tables se data lana hota hai, aur JOINs se yeh hota hai.