Reviewer: Selecting Data, Example Queries & Expected
Aggregation, and Grouping in Outputs
SQL 1. Total Salary per Department –
Uses `SUM(salary)` with `GROUP
Aggregation and Grouping in BY department`.
SQL 2. Average Salary per Job Title –
- Aggregation allows summarizing Uses `AVG(salary)` with `GROUP
data using functions like `SUM`, BY job_title`.
`COUNT`, `AVG`, etc. 3. Min & Max Salary per
- `GROUP BY` organizes data into Department – Uses `MIN(salary)`,
categories. `MAX(salary)`.
- `HAVING` filters grouped data 4. Grouping by Year of Hire – Uses
based on conditions. `YEAR(hire_date)` with `GROUP
Common Aggregate Functions BY`.
1. `SUM(column)` – Returns the
total sum of values. Reviewer: Selecting Data &
2. `COUNT(column)` – Returns Joining Tables in SQL
the number of rows (ignores Introduction to SQL Joins
`NULL`). - Joining tables in SQL allows
3. `AVG(column)` – Returns retrieving data from multiple
the average value. related tables using a common
4. `MIN(column)` – Returns field.
the smallest value. - Relational databases use foreign
5. `MAX(column)` – Returns keys to establish relationships
the largest value. between tables.
Using the GROUP BY Clause Common Types of Joins in SQL
- Groups rows that share the same 1. INNER JOIN (Default Join)
values. - Returns only the rows where
- Used with aggregate functions to there is a match between both
organize data meaningfully. tables.
- Example: Counting employees - Rows without matching records
per department. are excluded.
Filtering Groups with HAVING - Use Case: When you need data
- `HAVING` filters results after that exists in both tables (e.g.,
`GROUP BY`. employees belonging to a
- Used with aggregate functions department).
(unlike `WHERE`, which filters 2. LEFT JOIN (LEFT OUTER
before grouping). JOIN)
- Example: Finding departments - Returns all records from the
where total salary exceeds left table and matching records
170,000. from the right table.
Combining WHERE, GROUP - If no match is found, `NULL`
BY, and HAVING values are returned for the right
- `WHERE` filters before grouping. table.
- `GROUP BY` organizes data. - Use Case: To see all
- `HAVING` filters after employees, including those
grouping. without a department.
- Use Case: Merging datasets from
multiple sources (e.g., combining
retail and online customer lists).
3. RIGHT JOIN (RIGHT OUTER Examples & Expected Outputs
JOIN) 1. Employees per Department
- Returns all records from the using INNER JOIN.
right table and matching records 2. All Employees (even without a
from the left table. department) using LEFT JOIN.
- If no match exists, `NULL` 3. All Departments (even without
values appear for the left table. employees) using RIGHT JOIN.
- Use Case: To see all 4. Merging two customer lists
departments, including those using UNION and UNION ALL.
without employees.
4. FULL JOIN (FULL OUTER
JOIN)
- Combines results of LEFT JOIN
and RIGHT JOIN.
- Returns all records from both
tables, with `NULL` values where
no match is found.
- Use Case: When a complete
dataset, including unmatched
records from both tables, is
needed.
5. CROSS JOIN
- Creates a Cartesian product
(every row from the first table
joins with every row from the
second table).
- Use Case: To generate all
possible combinations (e.g.,
pairing all employees with all
departments for testing).
6. SELF JOIN
- A table joins with itself, useful
for hierarchical relationships (e.g.,
employees and their managers).
- Use Case: Working with
hierarchical data like reporting
structures (e.g., employees
reporting to managers).
UNION and UNION ALL
- Used to combine results of
multiple `SELECT` queries into
one result set.
- UNION removes duplicates, while
UNION ALL retains all records.