Example 1
Assign each employee to the salary bracket they fall into
The ON clause uses BETWEEN instead of =. For each employee, the database checks every bracket row to see if the salary falls within [min_sal, max_sal]. Alice (55,000) matches Junior (0–60,000). Bob (85,000) matches Senior (60,001–100,000). Carol (120,000) matches Principal (100,001–999,999). Each employee matches exactly one bracket because the ranges do not overlap.
CREATE TABLE employees (name VARCHAR(50), salary INT);
INSERT INTO
employees
VALUES
('Alice', 55000),
('Bob', 85000),
('Carol', 120000);
CREATE TABLE brackets (bracket VARCHAR(20), min_sal INT, max_sal INT);
INSERT INTO
brackets
VALUES
('Junior', 0, 60000),
('Senior', 60001, 100000),
('Principal', 100001, 999999);SELECT
e.name,
e.salary,
b.bracket
FROM
employees e
JOIN brackets b ON e.salary BETWEEN b.min_sal AND b.max_sal
ORDER BY
e.name;| name | salary | bracket |
|---|---|---|
| Alice | 55000 | Junior |
| Bob | 85000 | Senior |
| Carol | 120000 | Principal |
Identical syntax and result across all engines.