Sample Data
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
We'll use this students table for all examples:
What is COUNT?
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
COUNT tells you how many rows you have. Like counting students in a classroom.
SELECT COUNT(*) FROM students;Result: 5 (if you have 5 students)
What is SUM?
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
SUM adds up numbers. Like adding prices in a shopping cart.
SELECT SUM(age) FROM students;Result: 106 (if ages are 20+22+21+23+20)
How They Work
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Basic Syntax
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
-- Count all rows
SELECT COUNT(*) FROM table_name;
-- Add up a column
SELECT SUM(column_name) FROM table_name;COUNT with WHERE
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Count only matching rows:
-- How many students are older than 20?
SELECT COUNT(*) FROM students WHERE age > 20;
-- How many got grade A?
SELECT COUNT(*) FROM students WHERE grade = 'A';SUM with WHERE
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Add up only matching rows:
-- Total age of grade A students
SELECT SUM(age) FROM students WHERE grade = 'A';Using Aliases
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Give your result a nice name:
SELECT COUNT(*) AS total_students FROM students;
SELECT SUM(age) AS total_age FROM students;COUNT DISTINCT
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Count unique values only:
-- How many different grades exist?
SELECT COUNT(DISTINCT grade) FROM students;If grades are A, B, A, C, B, A → Result: 3 (A, B, C)
Combine Both
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Use COUNT and SUM together:
SELECT
COUNT(*) AS total_students,
SUM(age) AS total_age
FROM students;Try It Below
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Use the playground to practice:
SELECT COUNT(*) FROM students;SELECT SUM(age) FROM students;SELECT COUNT(*) FROM students WHERE grade = 'A';
What Comes Next
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
Next: Learn AVG (average) and MIN/MAX functions.
Try COUNT & SUM
Count rows or add numbers. Try: SELECT SUM(age) FROM students;
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |
COUNT with WHERE
Count only grade A students. Try: SELECT COUNT(*) FROM students WHERE grade = 'A';
| id | name | age | grade |
|---|---|---|---|
| 1 | Alice | 20 | A |
| 2 | Bob | 22 | B |
| 3 | Charlie | 21 | A |
| 4 | David | 23 | B |