Сложные SQL-запросы: разборы расчётов и ошибок
Выбираете обучение после базового SQL? Сравните продвинутый SQL, практическую аналитику и A/B-тестирование: у этих маршрутов разные задачи и требования.
Маршрут для тех, кто уже знает SELECT, JOIN и группировки. Сначала сформулируйте, что означает строка результата, затем возьмите маленькие данные и посчитайте ожидаемую таблицу вручную. Здесь важна проверка смысла запроса, а не только отсутствие синтаксической ошибки.
Как пользоваться разборами
Выберите вопрос, совпадающий с вашей задачей. Внутри есть учебный пример, способ проверки и границы применимости. Воспроизведите пример на небольших безопасных данных, затем измените одно условие и сравните результат. Если проблема относится к нескольким этапам, проверяйте их по очереди.
Разборы 1–5
-
Топ товаров в SQL: три строки или три места с учётом ничьих. Менеджер просит три лучших товара, а SQL возвращает четыре строки.
-
Как разбить события на сессии в SQL по паузе между действиями. Для внутреннего продукта требуется собственное определение сессии: новая начинается после паузы больше тридцати минут.
-
Скользящее среднее SQL: три строки не всегда равны трём дням. После пропуска даты среднее за три дня начинает включать слишком старую продажу.
-
Воронка в SQL: почему наличие трёх событий ещё не означает прохождение. Пользователь открывал карточку, начинал оформление и платил, но в неправильном порядке.
-
Рекурсивный CTE и цикл в иерархии: как не уйти в бесконечный обход. В справочнике подразделений по ошибке появилась связь обратно к предку.
Разборы 6–10
-
UNION или UNION ALL: как случайно потерять одинаковые платежи. Два клиента заплатили одинаковую сумму в один день, а после объединения выгрузок остался один платёж.
-
Конверсия в SQL без деления на ноль и целочисленной ошибки. Доля оплат выводится как ноль, хотя три человека из десяти купили.
-
Фильтр дат SQL: как включить весь месяц и не захватить следующий. Отчёт за октябрь потерял покупки вечером последнего дня.
-
Поздние события в SQL: почему вчерашний отчёт меняется сегодня. Продажи за вчера выросли после ночного пересчёта, хотя новых покупок вчера уже быть не могло.
-
Составной индекс SQL: как проверить пользу, а не угадать порядок полей. Для отчёта по одному клиенту и диапазону дат добавили индекс, но ускорения не видно.
Разборы 11–15
-
Как сверить два SQL-отчёта: одинаковые суммы могут скрывать ошибки. После переноса отчёта итоговая сумма совпала, и проверку решили завершить.
-
SQL: как найти двойное бронирование переговорной. Две встречи назначены на одну переговорную, но обычная проверка одинакового времени начала их не замечает.
-
Остаток есть, продавать нельзя: как рассчитать доступный товар в SQL. На складе числится десять единиц товара, но восемь уже обещаны другим покупателям.
-
Частичные возвраты в SQL: как найти заказ, которому вернули больше оплаты. Каждый возврат по отдельности меньше исходной оплаты, но вместе они превышают сумму заказа.
-
Подписка на часть месяца: как посчитать пропорциональную сумму в SQL. Подписка начала действовать в середине октября, а отчёт начислил полную месячную стоимость.
Разборы 16–20
-
Как распределить скидку заказа по товарам в SQL без потерянной копейки. Скидка задана на заказ целиком, а аналитике нужна чистая выручка каждой позиции.
-
Просроченные заявки в SQL: почему открытые тикеты нельзя выбрасывать из SLA. Среднее время закрытия выглядит отличным, хотя в очереди неделями висят нерешённые заявки.
-
Загрузка гостиницы в SQL: считать ночи, а не количество бронирований. Пять броней не означают пять занятых номеров сегодня.
-
Возраст дебиторской задолженности в SQL: как учесть частичную оплату. Счёт частично оплачен, но отчёт по задолженности продолжает относить всю сумму в просрочку.
-
Две корзины с одинаковой суммой: как сравнить состав товаров в SQL. Корзина на сайте и корзина в системе заказов имеют одинаковый итог, но покупатель получил другой товар.
Когда переходить к системной программе
Если отдельные статьи показывают повторяющиеся пробелы, сравните программу соответствующего платного курса Latorn со своей подготовкой и задачами. Этот навигатор подготовлен самой платформой. Статьи помогают разобраться с частными вопросами; наличие примера не означает обещания готового промышленного проекта или профессионального результата.
