Как готовиться
Не заучивайте запросы. Заведите базу с таблицами пользователей, заказов и товаров, наполните её вручную и решайте на ней. Понимание держится в голове, заученное — нет.
Все задачи ниже разбираются в пределах базового уровня.
Пятнадцать задач
1. Все записи с условием. Выбрать заказы за последний месяц. Проверяет: умение работать с датами.
2. Сортировка и ограничение. Десять самых дорогих заказов. Проверяет: сортировку по убыванию и ограничение выборки.
3. Уникальные значения. Список городов, из которых были заказы, без повторов. Проверяет: знание отбора уникальных значений.
4. Количество. Сколько всего заказов у пользователя. Проверяет: подсчёт с условием.
5. Группировка. Сколько заказов у каждого пользователя. Проверяет: понимание группировки. Классическая ошибка — вывести колонку, которой нет ни в группировке, ни в подсчёте.
6. Условие после группировки. Пользователи, у которых больше пяти заказов. Проверяет: разницу между условием до группировки и после. Одна из самых частых ошибок.
7. Объединение двух таблиц. Список заказов с именами пользователей. Проверяет: внутреннее объединение.
8. Левое объединение. Все пользователи и количество заказов, включая тех, у кого их нет. Проверяет: понимание, зачем нужно левое объединение. Ключевая задача.
9. Поиск отсутствующих. Пользователи, которые не сделали ни одного заказа. Проверяет: левое объединение с проверкой на пустоту либо отрицание вхождения.
10. Сумма по группам. Общая сумма заказов по каждому городу. Проверяет: сочетание объединения, группировки и подсчёта.
11. Среднее. Средний чек по каждому месяцу. Проверяет: группировку по вычисляемому значению.
12. Максимум в группе. Последний заказ каждого пользователя. Проверяет: умение думать. Решается несколькими способами, любой рабочий подойдёт.
13. Обновление с условием. Пометить заказы старше года как архивные. Проверяет: осторожность. Обязательно уточните вслух, что без условия обновится вся таблица.
14. Удаление с условием. Удалить незавершённые заказы старше месяца. Проверяет: то же самое плюс понимание последствий.
15. Три таблицы. Пользователь, заказ и товары в заказе — вывести, кто что купил. Проверяет: умение соединить больше двух таблиц.
Где новички ошибаются
Путают условия до и после группировки. Отбор строк и отбор групп — разные вещи.
Забывают, что при объединении могут появиться дубли. Если у пользователя пять заказов, он встретится в результате пять раз.
Пытаются считать после объединения без группировки. Получается число по всей таблице, а не по пользователю.
Не думают о пустых значениях. Сравнение с пустым значением работает не так, как кажется: нужна отдельная проверка.
Что говорить, если не знаете
То же, что и в любой задаче: рассуждайте вслух. «Тут нужно соединить две таблицы, потом сгруппировать по пользователю и посчитать. Не помню точный синтаксис отбора групп, но логика такая». Это оценивается выше молчания.
Хватит читать — пора делать
На CohortX можно найти команду под пет-проект и получить тот самый опыт, о котором спрашивают на собеседовании.
Похожие статьи
- Fifteen SQL queries you'll be asked at an interviewStandard problems with notes on what each one tests, and the places beginners get them wrong.
- SQL for beginners: where to startWhat you need at entry, the order to learn it in from simple selects to joins, and where to practise.
- SQL для начинающих: с чего начатьЧто нужно знать на входе, порядок изучения от простой выборки до объединения таблиц и где тренироваться.