Помощь

Виджеты и упражнения

Виджет «SQL-песочница»

Как писать SQL внутри упражнений, где выполняются запросы и как проверяется результат.

В уроках темы «Данные и логи: SQL, терминал, Kibana» под текстом стоит SQL-редактор. Запросы выполняются в настоящей базе PostgreSQL: для вас поднимается отдельная учебная база, и вы работаете с ней, как с базой на стенде.

Как выглядит

  • Задача — что нужно получить. В одном уроке бывает несколько задач подряд.
  • Схема — какие таблицы и колонки есть в базе.
  • Поле для запроса — пишете SQL.
  • Кнопка «Выполнить» — запускает запрос, ниже появляется таблица результата или текст ошибки.
  • Кнопка «Проверить» — отправляет запрос на проверку.

Пока база запускается, на кнопке написано «Запускаю песочницу…» — подождите несколько секунд.

Какие таблицы доступны

Схема зависит от урока и показана рядом с редактором. В большинстве заданий это база интернет-магазина: users, products, orders, order_items, carts, payments. Обратите внимание: сумма заказа в orders лежит в колонке total.

Список таблиц можно посмотреть и запросом:

SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'public';

А колонки конкретной таблицы — так:

SELECT column_name, data_type
FROM information_schema.columns
WHERE table_name = 'orders';

Как платформа проверяет

Ваш запрос и эталонный выполняются на одних и тех же данных, и сравниваются наборы строк:

  • порядок строк не важен, если задача не просит сортировку;
  • имена колонок не важны, можно использовать псевдонимы (AS);
  • сами значения должны совпасть: лишние или недостающие строки, дубликаты там, где нужен DISTINCT, — ошибка.

Запрос, который не выполнился, не засчитывается.

Типичные ошибки

  • Агрегат без GROUP BY — PostgreSQL выдаст ошибку, если в SELECT есть и агрегат, и обычная колонка без группировки.
  • COUNT(*) и COUNT(колонка) — второй не считает строки, где в колонке NULL.
  • JOIN без условия — получится декартово произведение: каждая строка с каждой.
  • Сравнение с NULL через = — нужно IS NULL.
  • Строки в двойных кавычках — в PostgreSQL строковые значения пишут в одинарных: 'paid'. Двойные кавычки — для имён колонок и таблиц.

Если что-то не работает

  1. Сверьтесь со схемой: правильные ли имена таблиц и колонок.
  2. Выполните запрос без WHERE и посмотрите, что вообще лежит в данных.
  3. Упростите запрос до минимума и добавляйте условия по одному, пока не найдёте, где ломается.
  4. Если песочница не запускается, обновите страницу; если не помогает — сообщите о проблеме (см. «Решение проблем»).

Что дальше