1. Основы SQL: структура запроса SELECT, фильтрация и сортировка
Основы SQL: структура запроса SELECT, фильтрация и сортировка
SQL (Structured Query Language) — это основной инструмент аналитика для взаимодействия с базами данных. В отличие от Excel, где вы видите данные сразу, в SQL вы должны явно описать, какие данные хотите получить. Основой этого взаимодействия является оператор SELECT.
Анатомия таблицы базы данных
Прежде чем писать запросы, важно понимать, как хранятся данные. В реляционных базах данных, таких как PostgreSQL, информация организована в таблицы.
Таблица состоит из двух измерений:
!Структура таблицы: пересечение строк и колонок
Базовая структура запроса
Любой запрос на выборку данных начинается с двух ключевых слов: SELECT и FROM.
* SELECT указывает базе данных, какие колонки вы хотите увидеть.
* FROM указывает, из какой таблицы брать данные.
Выборка всех колонок
Чтобы получить всё содержимое таблицы, используется символ звёздочки *:
Этот запрос вернет полную копию таблицы employees. В реальной аналитической работе использовать SELECT * не рекомендуется, особенно если в таблице миллионы строк или сотни колонок. Это создает избыточную нагрузку на базу данных и сеть.
Выборка конкретных колонок
Профессиональный подход — перечислять только необходимые поля через запятую:
Результатом будет таблица, содержащая только два столбца: имя сотрудника и его зарплату.
Фильтрация данных: оператор WHERE
Аналитику редко нужна вся таблица целиком. Чаще всего требуется найти конкретный сегмент: продажи за прошлый месяц, клиентов из определенного города или транзакции с ошибками. Для этого используется оператор WHERE.
WHERE добавляется после FROM и содержит логическое условие. Если условие истинно для строки, она попадает в результат. Если ложно — отбрасывается.
Операторы сравнения
PostgreSQL поддерживает стандартные математические операторы:
* = — равно
* <> или != — не равно
* > — больше
* < — меньше
* >= — больше или равно
* <= — меньше или равно
Логические операторы: AND, OR, NOT
Часто одного условия недостаточно. Для комбинирования условий используются логические операторы.
Оператор AND (И) Требует выполнения обоих условий одновременно. Это сужает выборку.
В результат попадут только те сотрудники, которые работают в маркетинге И получают 60000 или больше.
Оператор OR (ИЛИ) Требует выполнения хотя бы одного из условий. Это расширяет выборку.
Запрос вернет всех сотрудников IT-отдела и всех сотрудников отдела продаж.
Приоритет операций
Как и в математике, у оператора AND приоритет выше, чем у OR. Чтобы изменить порядок выполнения, используйте круглые скобки.
Пример ошибки логики:
Из-за приоритета AND, база данных сначала найдет продавцов с высокой зарплатой, а потом добавит к ним всех айтишников (даже с низкой зарплатой).
Правильный запрос для поиска высокооплачиваемых сотрудников в обоих отделах:
Работа с NULL
NULL в SQL означает отсутствие значения. Это не ноль и не пустая строка. Это "неизвестно".
Главное правило: никогда не используйте = или != для сравнения с NULL. Поскольку значение неизвестно, оно не может быть равно или не равно чему-либо.
Для проверки на пустоту используются специальные конструкции:
* IS NULL — если значение отсутствует.
* IS NOT NULL — если значение заполнено.
Сортировка данных: ORDER BY
Данные в таблице базы данных не имеют гарантированного порядка. Если вы выполните один и тот же запрос дважды, строки могут вернуться в разной последовательности. Чтобы упорядочить результат, используется оператор ORDER BY.
Он всегда ставится в конце запроса (после WHERE).
Типы сортировки:
* ASC (Ascending) — по возрастанию (от А до Я, от 0 до 9). Это значение по умолчанию, его можно не писать.
* DESC (Descending) — по убыванию (от Я до А, от 9 до 0).
Сортировка по нескольким колонкам
Можно сортировать данные по нескольким критериям последовательно. Например, сначала отсортировать сотрудников по отделам (по алфавиту), а внутри каждого отдела — по зарплате (от самой высокой).
Ограничение количества строк: LIMIT
При анализе больших данных часто нужно посмотреть только на примеры данных или на топ-N записей. Для этого используется LIMIT.
Найти 5 сотрудников с самой высокой зарплатой:
Порядок выполнения запроса
Для аналитика критически важно понимать не только то, как писать запрос, но и как база данных его выполняет. Порядок написания кода отличается от порядка его логической обработки движком PostgreSQL.
Вы пишете:
SELECTFROMWHEREORDER BYLIMITБаза данных выполняет:
!Порядок выполнения SQL-запроса движком базы данных
Почему это важно? Потому что вы не можете использовать в блоке WHERE псевдонимы (alias) колонок, которые вы создали в блоке SELECT, так как на момент работы WHERE блок SELECT еще не был выполнен.
Итоги
* Запрос всегда начинается с SELECT (что выбрать) и FROM (откуда выбрать).
* WHERE используется для фильтрации строк. Для сравнения с пустыми значениями используйте только IS NULL, а не =.
* Логический оператор AND сужает выборку (оба условия верны), а OR расширяет её (хотя бы одно верно).
* ORDER BY сортирует результаты. ASC — по возрастанию, DESC — по убыванию.
* Порядок выполнения запроса отличается от порядка написания: фильтрация (WHERE) происходит до выбора колонок (SELECT).