SQL - SELECT

Overview

SELECT retrieves data. Start simple, then add filtering and ordering.

Examples

-- top 10 by salary in dept 1
SELECT first_name, salary
FROM employees
WHERE department_id = 1
ORDER BY salary DESC
LIMIT 10;
-- top 10 by salary in dept 1
SELECT TOP (10) first_name, salary
FROM employees
WHERE department_id = 1
ORDER BY salary DESC;

-- or with OFFSET/FETCH
SELECT first_name, salary
FROM employees
WHERE department_id = 1
ORDER BY salary DESC
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY;
-- top 10 by salary in dept 1
SELECT first_name, salary
FROM employees
WHERE department_id = 1
ORDER BY salary DESC
LIMIT 10;

Prerequisite

Load the Standard Test Data. The examples below assume that dataset.

Expected Output

For the query shown (top 10 by salary in department_id = 1), expected rows are:

first_namesalary
Eli130000
Ada120000
Bob90000

Sample Use Cases (5)

1) Select specific columns

SELECT id, first_name, salary FROM employees;
SELECT id, first_name, salary FROM employees;
SELECT id, first_name, salary FROM employees;
idfirst_namesalary
1Ada120000
2Bob90000
3Chen80000
4Dee110000
5Eli130000

2) Sort by recently hired

SELECT id, first_name, hired_at
FROM employees
ORDER BY hired_at DESC NULLS LAST;
SELECT id, first_name, hired_at
FROM employees
ORDER BY hired_at DESC;
SELECT id, first_name, hired_at
FROM employees
ORDER BY hired_at IS NULL, hired_at DESC;
idfirst_namehired_at
4Dee2022-03-01 12:00:00
2Bob2021-05-05 09:30:00
1Ada2021-01-10 10:00:00
5Eli2020-11-20 15:15:00
3Chen

3) Distinct department IDs

SELECT DISTINCT department_id FROM employees;
SELECT DISTINCT department_id FROM employees;
SELECT DISTINCT department_id FROM employees;
department_id
1
2
3

4) Top N by salary

SELECT first_name, salary FROM employees ORDER BY salary DESC LIMIT 3;
SELECT TOP (3) first_name, salary FROM employees ORDER BY salary DESC;
SELECT first_name, salary FROM employees ORDER BY salary DESC LIMIT 3;
first_namesalary
Eli130000
Ada120000
Dee110000

5) Computed column (annual bonus @ 10%)

SELECT first_name, salary, ROUND(salary * 0.10, 2) AS bonus FROM employees;
SELECT first_name, salary, CAST(salary * 0.10 AS DECIMAL(10,2)) AS bonus FROM employees;
SELECT first_name, salary, ROUND(salary * 0.10, 2) AS bonus FROM employees;
first_namesalarybonus
Eli13000013000.0
Ada12000012000.0
Dee11000011000.0
Bob900009000.0
Chen800008000.0

Next, add filtering operators and predicates in the WHERE lesson.