বিষয়সূচী

01

গল্প — কেন Aggregate?

১৫ মিনিট

E-commerce-এ ১০ লাখ order। CEO জিজ্ঞেস করে: মোট order কত? Total sales? Average? Highest? Lowest?

1,000,000 rows → Too much data → Business Q → Summary Needed → Aggregate Functions
জিজ্ঞেস

CEO কি ১০ লাখ row দেখতে চায়? নাকি ছোট summary report?

Aggregate Functions অনেক row নিয়ে একটি summary value তৈরি করে।
02

Real-life Examples

১০ মিনিট

School

Total / Average / Highest / Lowest marks · কতজন student?

Company

Total / Average / Highest / Lowest salary · headcount

Hospital

Patients · average age · max/min age

Bank

Total deposits · avg transaction · max/min

03

Aggregate Function কী?

৮ মিনিট

Aggregate Function = একাধিক row-এর data নিয়ে একটি summary result তৈরি করে।

Many Rows → Aggregate Function → One Summary Value 10 20 30 40 50 → SUM() → 150 10 20 30 40 50 → AVG() → 30
04

৫টি Core Function

৬ মিনিট
AGGREGATE FUNCTIONS │ ┌─────────┬───────┼───────┬─────────┐ ↓ ↓ ↓ ↓ ↓ COUNT() SUM() AVG() MAX() MIN() How many Total Average Highest Lowest
05

employees Dataset

১০ মিনিট
CREATE DATABASE agg_lab; USE agg_lab; CREATE TABLE employees ( employee_id INT PRIMARY KEY, employee_name VARCHAR(80), department VARCHAR(40), salary DECIMAL(10,2), age INT ); INSERT INTO employees VALUES (1,'Rahim','IT',50000,25), (2,'Karim','HR',45000,28), (3,'Jannat','IT',60000,27), (4,'Nabila','Sales',40000,24), (5,'Hasan','IT',55000,30), (6,'Sumi','HR',48000,26), (7,'Rafi','Finance',70000,32), (8,'Nila','Sales',42000,23), (9,'Imran','IT',58000,29), (10,'Sara','Finance',65000,31), (11,'Omar','HR',47000,27), (12,'Mita','Sales',39000,22), (13,'Tarek','IT',62000,33), (14,'Lina','Finance',68000,28), (15,'Jamal','HR',46000,35), (16,'Pria','IT',53000,26), (17,'Shakib','Sales',41000,25), (18,'Rina','Finance',72000,34), (19,'Fahim','IT',59000,31), (20,'Ayesha','HR',44000,29);
২০ জন employee — IT / HR / Sales / Finance।
06

COUNT(*)

৮ মিনিট
Company-তে মোট কতজন employee?
SELECT COUNT(*) AS total_employees FROM employees;
total_employees 20

COUNT(*) = কয়টি row আছে।

07

COUNT(column) vs COUNT(*)

১০ মিনিট
salary: 50000, 60000, NULL, 45000 COUNT(*) → 4 (সব row) COUNT(salary) → 3 (শুধু non-NULL)
SELECT COUNT(salary) FROM employees;
NULL ≠ 0। COUNT(column) NULL বাদ দেয়।
08

COUNT(DISTINCT)

৮ মিনিট
SELECT COUNT(DISTINCT department) AS total_departments FROM employees;
total_departments = 4 (IT, HR, Sales, Finance)
09

SUM()

৮ মিনিট
মোট salary খরচ কত?
SELECT SUM(salary) AS total_salary FROM employees;
50000+45000+… → SUM() → এক মোট সংখ্যা
10

AVG()

৮ মিনিট
40000 + 50000 + 60000 = 150000 COUNT = 3 → AVG = 50000 AVG = SUM(valid values) ÷ COUNT(valid values)
SELECT AVG(salary) AS average_salary FROM employees;
11

MAX()

১০ মিনিট
SELECT MAX(salary) AS highest_salary FROM employees;
MAX() শুধু সংখ্যা দেয় — নাম দেয় না।
Optional: কে সর্বোচ্চ পায়?
SELECT employee_name, salary FROM employees WHERE salary = (SELECT MAX(salary) FROM employees);
12

MIN()

৬ মিনিট
SELECT MIN(salary) AS lowest_salary FROM employees;
SELECT employee_name, salary FROM employees WHERE salary = (SELECT MIN(salary) FROM employees);
13

Comparison Table

৫ মিনিট
FunctionMeaningExample
COUNT()কতটিকতজন employee?
SUM()মোটমোট salary?
AVG()গড়Average salary?
MAX()সর্বোচ্চHighest salary?
MIN()সর্বনিম্নLowest salary?
COUNT=HOW MANY? · SUM=TOTAL? · AVG=AVERAGE? · MAX=HIGHEST? · MIN=LOWEST?
14

Aggregate vs Normal

৫ মিনিট
Normal Function: Row → Result Aggregate: Rows → One Summary Result
15

Multiple Aggregates (no GROUP BY)

৮ মিনিট
SELECT COUNT(*) AS total_employees, SUM(salary) AS total_salary, AVG(salary) AS average_salary, MAX(salary) AS highest_salary, MIN(salary) AS lowest_salary FROM employees;
20 Employees → ONE BIG GROUP → ONE SUMMARY ROW
16

GROUP BY + COUNT

১০ মিনিট

GROUP BY = কোন কলাম অনুযায়ী আলাদা আলাদা দল বানাও।

SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department;
All Employees → GROUP BY department → IT / HR / Sales / Finance groups → COUNT each
17

GROUP BY + SUM

৬ মিনিট
SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department;
18

GROUP BY + AVG

৬ মিনিট
SELECT department, AVG(salary) AS average_salary FROM employees GROUP BY department;
19

GROUP BY + MAX

৫ মিনিট
SELECT department, MAX(salary) AS highest_salary FROM employees GROUP BY department;

প্রতি department-এর মধ্যে highest।

20

GROUP BY + MIN

৫ মিনিট
SELECT department, MIN(salary) AS lowest_salary FROM employees GROUP BY department;
21

Full Department Report

১০ মিনিট
SELECT department, COUNT(*) AS employee_count, SUM(salary) AS total_salary, AVG(salary) AS average_salary, MAX(salary) AS highest_salary, MIN(salary) AS lowest_salary FROM employees GROUP BY department;
Live demo: এক query-তে পুরো department dashboard।
22

Aggregate + WHERE

৮ মিনিট
SELECT AVG(salary) AS average_salary FROM employees WHERE department = 'IT';
FROM → WHERE → Filtered Rows → AVG → Result
SELECT department, AVG(salary) FROM employees WHERE age > 25 GROUP BY department;
23

Aggregate + HAVING

৮ মিনিট
SELECT department, COUNT(*) AS employee_count FROM employees GROUP BY department HAVING COUNT(*) > 5;
Rows → WHERE → GROUP BY → COUNT → HAVING → Final Groups
WHERE = row filter · HAVING = group filter
24

WHERE vs HAVING

৮ মিনিট
WHEREHAVING
Row filterGroup filter
Before groupingAfter grouping
Individual recordsSummary groups
Usually before GROUP BYAfter GROUP BY

WHERE

salary > 50000

HAVING

AVG(salary) > 50000
25

NULL + Aggregates

১০ মিনিট
50000, 60000, NULL, 40000 COUNT(*) → 4 COUNT(salary) → 3 SUM / AVG / MAX / MIN → ignore NULL
NULL শূন্য নয় — বেশিরভাগ aggregate NULL বাদ দেয়।
26

DISTINCT + Aggregate

৫ মিনিট
SELECT COUNT(DISTINCT department) FROM employees;

Unique customers / cities / categories count করতে ব্যবহার।

27

Aggregate + ORDER BY / LIMIT

৮ মিনিট
SELECT department, SUM(salary) AS total_salary FROM employees GROUP BY department ORDER BY total_salary DESC LIMIT 1;
GROUP → SUM → ORDER BY → LIMIT 1 → top department
28

E-commerce KPIs

১০ মিনিট
CREATE TABLE orders ( order_id INT, customer_name VARCHAR(80), city VARCHAR(80), category VARCHAR(80), product VARCHAR(80), quantity INT, price DECIMAL(10,2), order_date DATE ); -- insert sample rows in class SELECT COUNT(*) FROM orders; SELECT SUM(quantity * price) FROM orders; SELECT AVG(quantity * price) FROM orders; SELECT MAX(quantity * price) FROM orders; SELECT MIN(quantity * price) FROM orders;
29

E-com + GROUP BY

১০ মিনিট
SELECT category, SUM(quantity * price) AS total_sales FROM orders GROUP BY category; SELECT city, COUNT(*) AS total_orders FROM orders GROUP BY city; SELECT city, AVG(quantity * price) AS aov FROM orders GROUP BY city; SELECT category, MAX(quantity * price) AS highest_order FROM orders GROUP BY category;
30

Business Questions → SQL (১৫)

১২ মিনিট
BQ 1 — Which city has most orders?
GROUP BY city ORDER BY COUNT(*) DESC LIMIT 1
BQ 2 — Total sales overall?
SELECT SUM(quantity*price) FROM orders
BQ 3 — Average order value?
SELECT AVG(quantity*price) FROM orders
BQ 4 — Highest order amount?
SELECT MAX(quantity*price) FROM orders
BQ 5 — Lowest order amount?
SELECT MIN(quantity*price) FROM orders
BQ 6 — Sales by category?
GROUP BY category SUM(qty*price)
BQ 7 — Orders by city?
GROUP BY city COUNT(*)
BQ 8 — Avg order by city?
GROUP BY city AVG(qty*price)
BQ 9 — Max order by category?
GROUP BY category MAX(qty*price)
BQ 10 — Unique customers?
COUNT(DISTINCT customer_name)
BQ 11 — Categories with sales > 100000?
GROUP BY category HAVING SUM(...)>100000
BQ 12 — Cities with >20 orders?
HAVING COUNT(*)>20
BQ 13 — Top category by sales?
ORDER BY total_sales DESC LIMIT 1
BQ 14 — Total Electronics sales?
WHERE category='Electronics' SUM(qty*price)
BQ 15 — Count orders Dhaka?
WHERE city='Dhaka' COUNT(*)
31

Aggregation Animation

৮ মিনিট
RAW: IT 50k, HR 40k, IT 60k, Sales 45k, IT 55k, HR 50k ↓ GROUP BY department IT: 50k,60k,55k | HR: 40k,50k | Sales: 45k ↓ SUM / AVG / COUNT / MAX / MIN SUMMARY REPORT
32

Guess the Output

১০ মিনিট
Guess: SELECT COUNT(*) FROM employees (20 rows)?
20
Guess: SUM of 40k+50k+60k?
150000
Guess: AVG of 40k+50k+60k?
50000
Guess: MAX of 40k,50k,60k?
60000
Guess: MIN of 40k,50k,60k?
40000
Guess: COUNT(*) with 1 NULL salary row among 4?
4
Guess: COUNT(salary) same data?
3
Guess: GROUP BY dept → how many result rows (4 depts)?
4
Guess: WHERE dept='IT' then AVG — rows?
শুধু IT filtered then AVG
Guess: HAVING COUNT(*)>5 — filters what?
groups, not raw rows
33

Choose the Function

৮ মিনিট
How many customers?
COUNT()
Total sales?
SUM()
Average salary?
AVG()
Highest price?
MAX()
Lowest price?
MIN()
Unique cities?
COUNT(DISTINCT city)
Per-department headcount?
COUNT(*) + GROUP BY department
Departments with >5 people?
HAVING COUNT(*)>5
IT average only?
WHERE department='IT' + AVG
Top department by cost?
SUM + GROUP BY + ORDER BY DESC LIMIT 1
Monthly sales?
SUM + GROUP BY YEAR/MONTH
Ignore NULL salaries in count?
COUNT(salary)
All rows including NULL cols?
COUNT(*)
Total of price×qty?
SUM(quantity*price)
Filter groups by avg>50k?
HAVING AVG(salary)>50000
34

Common Mistakes (১৫)

১০ মিনিট
  1. SUM দিয়ে count
  2. COUNT দিয়ে money
  3. AVG ও SUM গুলিয়ে
  4. GROUP BY ভুলে
  5. Non-grouped column SELECT
  6. WHERE vs HAVING গুলিয়ে
  7. NULL = 0 ভাবা
  8. COUNT(col) যখন COUNT(*) চাই
  9. DISTINCT ভুলে
  10. MAX দিয়ে পুরো row চাওয়া
  11. MIN ভুল ব্যবহার
  12. Wrong GROUP column
  13. Alias না দেওয়া
  14. Business Q না বুঝে function
  15. Aggregate সবসময় ১ row — GROUP BY থাকলে নয়
Pattern
WRONG → WHY? → CORRECT
35

Execution Flow

৮ মিনিট

No GROUP BY

FROM→WHERE→ALL ROWS→AGG→ONE SUMMARY

With GROUP BY

FROM→WHERE→GROUP→AGG each→HAVING→RESULT
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT
36

Aggregate vs GROUP BY

৫ মিনিট
GROUP BY → Creates Groups Aggregate Function → Calculates Summary inside groups
37

Single vs Multiple Groups

৫ মিনিট
No GROUP BY: All → One Group → One Result With GROUP BY: IT/HR/Sales/Finance → Multiple Results
38

Industry Use

৬ মিনিট
  • Analytics / BI: KPI, sales, dashboards
  • Finance: revenue, expense, profit
  • HR: headcount, salary cost
  • Data Science: feature / behavior summaries
  • Data Engineering: ETL batch summaries, DQ counts
39

Mini Project — Employee Dashboard

১২ মিনিট
SELECT department, COUNT(*) AS employee_count, SUM(salary) AS total_salary, AVG(salary) AS average_salary, MAX(salary) AS highest_salary, MIN(salary) AS lowest_salary FROM employees GROUP BY department ORDER BY total_salary DESC;
  1. Highest employee count dept
  2. Highest salary cost dept
  3. Highest average salary dept
  4. Depts with >5 employees
  5. Depts with avg salary > 50000
40

Advanced Beginner — CASE

৮ মিনিট
SELECT SUM(quantity * price) FROM orders; SELECT SUM( CASE WHEN category = 'Electronics' THEN quantity * price ELSE 0 END ) AS electronics_sales FROM orders; SELECT SUM( CASE WHEN salary > 50000 THEN 1 ELSE 0 END ) AS high_earners FROM employees;
Conditional aggregation — KPI metric তৈরির ধারণা।
41

Aggregates + Dates

৮ মিনিট
SELECT YEAR(order_date) AS year, MONTH(order_date) AS month, SUM(quantity * price) AS total_sales FROM orders GROUP BY YEAR(order_date), MONTH(order_date);
42

Multi-column GROUP BY

৬ মিনিট
SELECT city, category, SUM(quantity * price) AS total_sales FROM orders GROUP BY city, category;
City → Category → Aggregate কোন city-তে কোন category কত sales?
43

Performance Basics

৫ মিনিট
1 Billion Rows → Filter early → Aggregate smaller set → Better Index helps filter/join · Avoid extra columns · EXPLAIN peek
44

Interview Top 30

১৫ মিনিট
IV 1. Aggregate function কী?
Many rows → one summary · উদা: COUNT · ফলো: five cores · ইউজ: KPI
IV 2. Five common?
COUNT SUM AVG MAX MIN · ভুল: JOIN · ফলো: example · ইউজ: dashboards
IV 3. COUNT vs COUNT(col)?
* all rows · col non-NULL · ভুল: same · ফলো: NULL · ইউজ: data quality
IV 4. COUNT(*) vs COUNT(DISTINCT)?
rows vs unique values · ভুল: same · ফলো: depts · ইউজ: cardinality
IV 5. SUM?
যোগফল · ভুল: count · ফলো: salary · ইউজ: revenue
IV 6. AVG?
গড় · ভুল: median always · ফলো: formula · ইউজ: AOV
IV 7. MAX?
সর্বোচ্চ মান · ভুল: row · ফলো: subquery · ইউজ: peaks
IV 8. MIN?
সর্বনিম্ন · ভুল: COUNT · ফলো: who · ইউজ: floors
IV 9. NULL effect?
mostly ignored · ভুল: as 0 · ফলো: COUNT · ইউজ: clean data
IV 10. Without GROUP BY?
হ্যাঁ — one group · ভুল: illegal · ফলো: multi-agg · ইউজ: overview
IV 11. With GROUP BY?
হ্যাঁ — per group · ভুল: only WHERE · ফলো: dept · ইউজ: BI
IV 12. WHERE vs HAVING?
row vs group · ভুল: same · ফলো: examples · ইউজ: filters
IV 13. WHERE with aggregate?
সাধারণত না · ভুল: WHERE AVG · ফলো: HAVING · ইউজ: syntax
IV 14. HAVING with aggregate?
হ্যাঁ · ভুল: only WHERE · ফলো: COUNT>5 · ইউজ: thresholds
IV 15. Unique customers?
COUNT(DISTINCT id) · ভুল: COUNT(*) · ফলো: city · ইউজ: CRM
IV 16. Total sales?
SUM(qty*price) · ভুল: COUNT · ফলো: category · ইউজ: finance
IV 17. Average salary?
AVG(salary) · ভুল: SUM/COUNT manual only · ফলো: IT WHERE · ইউজ: HR
IV 18. Highest salary?
MAX(salary) · ভুল: ORDER only · ফলো: name subquery · ইউজ: payroll
IV 19. Lowest salary?
MIN(salary) · ভুল: AVG · ফলো: name · ইউজ: banding
IV 20. Aggregate vs scalar?
many rows vs one value/row · ভুল: same · ফলো: UPPER · ইউজ: teaching
IV 21. GROUP BY vs agg?
split vs calculate · ভুল: synonyms · ফলো: visual · ইউজ: design
IV 22. Multiple aggs together?
হ্যাঁ · ভুল: one only · ফলো: dashboard · ইউজ: reports
IV 23. Expression in SUM?
SUM(qty*price) · ভুল: only columns · ফলো: CASE · ইউজ: metrics
IV 24. COUNT + NULL?
COUNT(col) skips · ভুল: errors · ফলো: * · ইউজ: DQ
IV 25. AVG + NULL?
ignores NULL · ভুল: divides by all · ফলো: formula · ইউজ: stats
IV 26. Top category?
GROUP SUM ORDER LIMIT · ভুল: MAX alone · ফলো: ties · ইউজ: merch
IV 27. Emp per dept?
COUNT GROUP BY dept · ভুল: DISTINCT only · ফলো: HAVING · ইউজ: org
IV 28. Filter groups?
HAVING · ভুল: WHERE AVG · ফলো: >5 · ইউজ: alerts
IV 29. Monthly sales?
GROUP BY YEAR MONTH · ভুল: only WHERE date · ফলো: chart · ইউজ: trends
IV 30. BI dashboards?
KPI tiles from aggs · ভুল: raw dumps · ফলো: refresh · ইউজ: exec
45

MCQ (২৫+)

১২ মিনিট
MCQ 1. Aggregate means? A) sort B) many→summary C) JOIN D) DELETE
B
MCQ 2. How many? A) SUM B) COUNT C) MAX D) MIN
B
MCQ 3. Total money? A) COUNT B) SUM C) AVG D) DISTINCT
B
MCQ 4. Average? A) AVG B) MAX C) MIN D) COUNT
A
MCQ 5. Highest? A) MIN B) MAX C) SUM D) AVG
B
MCQ 6. Lowest? A) MAX B) MIN C) SUM D) COUNT
B
MCQ 7. COUNT(*) with NULL salary? A) skips row B) counts row C) error D) 0
B
MCQ 8. COUNT(salary) NULL? A) counts B) skips C) as 0 D) error
B
MCQ 9. No GROUP BY result rows? A) many B) usually 1 C) 0 D) PK count
B
MCQ 10. GROUP BY dept rows? A) 1 B) #departments C) #employees D) random
B
MCQ 11. Filter rows before agg? A) HAVING B) WHERE C) LIMIT D) ORDER
B
MCQ 12. Filter groups? A) WHERE B) HAVING C) FROM D) JOIN
B
MCQ 13. Unique depts? A) COUNT(*) B) COUNT(DISTINCT department) C) SUM D) MAX
B
MCQ 14. NULL = 0? A) yes B) no C) always D) only SUM
B
MCQ 15. SUM ignores NULL? A) yes B) no C) errors D) converts 0 always
A
MCQ 16. AVG formula? A) SUM/COUNT(valid) B) MAX-MIN C) COUNT only D) DISTINCT
A
MCQ 17. MAX returns name? A) yes B) no — value only C) always ID D) JOIN auto
B
MCQ 18. Multiple aggs OK? A) no B) yes C) only COUNT D) only with JOIN
B
MCQ 19. SUM(qty*price)? A) illegal B) OK expression C) needs VIEW D) needs UNION
B
MCQ 20. Top dept cost? A) MAX only B) SUM+ORDER+LIMIT C) COUNT D) MIN
B
MCQ 21. HAVING COUNT(*)>5? A) row filter B) group filter C) sort D) join
B
MCQ 22. WHERE AVG(salary)? A) usually wrong B) always OK C) required D) synonym HAVING
A
MCQ 23. GROUP BY role? A) calculate B) create groups C) delete D) index
B
MCQ 24. Agg role? A) create groups B) summarize C) primary key D) FK
B
MCQ 25. City+category sales? A) GROUP BY city, category B) WHERE only C) LIMIT D) UNION
A
MCQ 26. Memory: COUNT=?
HOW MANY?
46

Viva

১০ মিনিট
Viva 1. Aggregate কী?
Many rows → summary
Viva 2. পাঁচটি নাম?
COUNT SUM AVG MAX MIN
Viva 3. COUNT(*)?
সব row
Viva 4. COUNT(col)?
non-NULL
Viva 5. SUM?
মোট
Viva 6. AVG?
গড়
Viva 7. MAX/MIN?
সর্বোচ্চ/নিম্ন
Viva 8. NULL?
সাধারণত ignore
Viva 9. GROUP BY ছাড়া?
এক group
Viva 10. GROUP BY সহ?
প্রতি group summary
Viva 11. WHERE?
row filter
Viva 12. HAVING?
group filter
Viva 13. DISTINCT count?
COUNT(DISTINCT …)
Viva 14. Total sales?
SUM(qty*price)
Viva 15. Dept headcount?
COUNT GROUP BY dept
Viva 16. Top dept?
ORDER BY SUM DESC LIMIT 1
Viva 17. Agg vs GROUP?
calc vs split
Viva 18. Multiple aggs?
হ্যাঁ
Viva 19. CASE in SUM?
conditional KPI
Viva 20. Monthly?
GROUP BY year, month
Viva 21. Mistake SUM for count?
use COUNT
Viva 22. MAX name?
subquery/WHERE
Viva 23. BI use?
dashboard KPIs
Viva 24. Performance tip?
filter early
Viva 25. Final model?
raw→agg→group→report
Viva 26. One vs many groups?
no GROUP BY vs with
47

Classroom Exercises (২০)

১২ মিনিট
Ex 1 — Count employees
SELECT COUNT(*) FROM employees
Ex 2 — Sum salaries
SELECT SUM(salary) FROM employees
Ex 3 — Avg salaries
SELECT AVG(salary) FROM employees
Ex 4 — Highest salary
SELECT MAX(salary) FROM employees
Ex 5 — Lowest salary
SELECT MIN(salary) FROM employees
Ex 6 — Count by dept
COUNT(*) GROUP BY department
Ex 7 — Total salary by dept
SUM(salary) GROUP BY department
Ex 8 — Avg by dept
AVG GROUP BY department
Ex 9 — Max by dept
MAX GROUP BY department
Ex 10 — Min by dept
MIN GROUP BY department
Ex 11 — Highest total salary dept
ORDER BY SUM DESC LIMIT 1
Ex 12 — Depts >5 employees
HAVING COUNT(*)>5
Ex 13 — IT average
WHERE department='IT' AVG
Ex 14 — Total salary age>30
WHERE age>30 SUM(salary)
Ex 15 — Unique departments
COUNT(DISTINCT department)
Ex 16 — Sales by city
orders GROUP BY city SUM
Ex 17 — Sales by category
GROUP BY category SUM
Ex 18 — AOV by city
AVG(qty*price) GROUP BY city
Ex 19 — Highest order by category
MAX GROUP BY category
Ex 20 — Cities sales>100000
HAVING SUM>100000
48

Homework Project

বাড়ি

E-commerce Sales Analytics Report

  • Overall: COUNT, SUM, AVG, MAX, MIN, unique customers/cities/categories
  • Category analysis: orders, sales, avg, max, min
  • City analysis: orders, sales, AOV
  • HAVING: sales>100000 · cities>20 orders
  • Dashboard query: all five aggs + GROUP BY + WHERE/HAVING/ORDER/LIMIT
Hint overall KPIs
SELECT COUNT(*), SUM(qty*price), AVG(...), MAX, MIN, COUNT(DISTINCT …)
Hint category block
GROUP BY category with multi-agg
Hint city block
GROUP BY city
Hint filters
HAVING SUM>100000 / HAVING COUNT(*)>20
49

1-Minute Revision

৩ মিনিট
COUNT → কতটি? SUM → মোট কত? AVG → গড় কত? MAX → সবচেয়ে বেশি? MIN → সবচেয়ে কম? GROUP BY → groups · Aggregate → summary WHERE → filter rows · HAVING → filter groups
50

Final Memory Map

৫ মিনিট
SQL AGGREGATE COUNT / SUM / AVG / MAX / MIN ↓ GROUP BY → Create Groups → Aggregate → HAVING → Report RAW DATA → Many Rows → Need Summary → AGGREGATE → (GROUP BY if separate summaries) → WHERE / HAVING → ORDER BY / LIMIT → BUSINESS REPORT Aggregate Function = অনেকগুলো row-এর data নিয়ে summary information তৈরি করে।