Как читать бизнес-задачу и превращать её в SQL
Зачем это нужно
В реальной работе аналитика никто не говорит «напиши SELECT с WHERE и ORDER BY». Вместо этого приходит сообщение от менеджера: «Слушай, можешь сделать список товаров дороже 2000₽ из Электроники? Нам нужно для акции, сначала самые дорогие, первые пять».
Ты уже знаешь все инструменты — SELECT, WHERE, AND, ORDER BY, LIMIT. Теперь нужно научиться переводить человеческий язык на SQL.
Как работает
Любое бизнес-требование можно разобрать по пяти вопросам:
| Вопрос | Что ищем | SQL-конструкция |
|---|---|---|
| Что показать? | столбцы | SELECT name, price |
| Откуда взять? | таблица | FROM products |
| При каком условии? | фильтры | WHERE ... |
| В каком порядке? | сортировка | ORDER BY ... |
| Сколько строк? | ограничение | LIMIT N |
Это универсальный чек-лист. Используй его с любой задачей.
Синтаксис — ничего нового
SELECT нужные_столбцы -- Что показать?
FROM products -- Откуда взять?
WHERE условия -- При каком условии?
ORDER BY столбец ASC/DESC -- В каком порядке?
LIMIT N; -- Сколько строк?
Разбор примера
Сообщение: «Нужен список дорогих товаров из Электроники для акции — только название и цена, сначала самые дорогие, первые пять»
Разбираем по вопросам:
- Что показать? →
name, price - Откуда? →
products - При каком условии? →
category = 'Электроника' AND price > 2000 - В каком порядке? →
ORDER BY price DESC - Сколько строк? →
LIMIT 5
SELECT name, price
FROM products
WHERE category = 'Электроника' AND price > 2000
ORDER BY price DESC, name ASC
LIMIT 5;
В Excel это заняло бы: добавить автофильтр на category, отфильтровать Электроника → добавить фильтр на price > 2000 → сортировать по price убыванием → вручную оставить 5 строк. SQL делает всё это одной командой.
Частые ошибки
- Забывают
ORDER BY, когда в задаче есть «первые N» — без сортировки порядок случаен - Пишут OR вместо AND: «товары из Электроники дороже 2000» — это AND, не OR
- Выбирают
SELECT *вместо конкретных столбцов — возвращают лишнее
Запомни
Переведи задачу в пять вопросов: Что? Откуда? При каком условии? В каком порядке? Сколько? — и запрос напишется сам.
Мини-практика
Разберите задачу по пяти вопросам:
«Покажи названия и цены товаров из категории Книги дешевле 1000₽, отсортированных по цене от дешёвых к дорогим»
Ответы
- Что показать? →
name, price - Откуда? →
products - При каком условии? →
category = 'Книги' AND price < 1000 - В каком порядке? →
ORDER BY price ASC - Сколько строк? → все (LIMIT не нужен)
SELECT name, price
FROM products
WHERE category = 'Книги' AND price < 1000
ORDER BY price ASC;
Прочитайте урок до конца — прогресс засчитается автоматически