Задание 2 — WHERE purchase_order_id BETWEEN 90 AND 100 + CASE.
Задание 3 — вложенные IF.
Задание 5 — не забудьте OFFSET 1 для строки «начиная со второй».
1
Решение задания 1
Классификация остатков двумя способами.
-- CASE
SELECT quantity,
CASE
WHEN quantity < 20 THEN 'Almost finish'
ELSE 'Enough'
END AS category
FROM inventory_transactions;
-- IF
SELECT quantity,
IF(quantity < 20, 'Almost finish', 'Enough') AS category
FROM inventory_transactions;
2
Решение задания 2
Фильтр по диапазону и категоризация по количеству.
SELECT *,
CASE
WHEN quantity < 30 THEN 'small'
WHEN quantity BETWEEN 30 AND 70 THEN 'medium'
ELSE 'large'
END AS category
FROM purchase_order_details
WHERE purchase_order_id BETWEEN 90 AND 100;
3
Решение задания 3
Те же категории через вложенные IF.
SELECT *,
IF(quantity < 30, 'small',
IF(quantity > 70, 'large', 'medium')) AS category
FROM purchase_order_details
WHERE purchase_order_id BETWEEN 90 AND 100;
4
Решение задания 4
Уникальные purchase_order_id с фильтром по стоимости.
SELECT DISTINCT purchase_order_id
FROM purchase_order_details
WHERE unit_cost > 10
ORDER BY purchase_order_id DESC;
5
Решение задания 5
Пять строк, начиная со второй, с фильтром по должности и сортировкой по региону.
SELECT *
FROM customers
WHERE job_title = 'Owner'
ORDER BY state_province ASC
LIMIT 5 OFFSET 1;
6
Решение задания 6
Уникальные продукты с высокой суммарной стоимостью строки заказа.
SELECT DISTINCT product_id
FROM order_details
WHERE quantity * unit_price > 200
ORDER BY product_id ASC
LIMIT 7;
7
Решение задания 7
Инициалы через LEFT и CONCAT.
SELECT CONCAT(LEFT(first_name, 1), '.', LEFT(last_name, 1), '.') AS initials
FROM employees;
8
Решение задания 8
Замена NULL на 'No data' двумя способами.
-- IF
SELECT *,
IF(payment_type IS NULL, 'No data', payment_type) AS payment_type_filled
FROM orders;
-- CASE
SELECT *,
CASE
WHEN payment_type IS NULL THEN 'No data'
ELSE payment_type
END AS payment_type_filled
FROM orders;
9
Решение задания 9
Имя и фамилия в верхнем регистре.
SELECT UPPER(first_name) AS first_name_upper,
UPPER(last_name) AS last_name_upper
FROM customers;
10
Решение задания 10
Три цифры после кода в скобках. Если формат телефона (XXX) XXX-XXXX, то нужные цифры начинаются с позиции 6.
SELECT business_phone,
SUBSTRING(business_phone, 6, 3) AS phone_part
FROM employees;