Фильтрация данных — это важный инструмент, который помогает решать различные аналитические задачи. Фильтрация позволяет извлечь информацию только из тех строк данных, которые соответствуют определенным условиям. Она значительно упрощает обработку больших объемов данных и помогает сэкономить время.
Фильтрация очень полезна в практических задачах аналитика. Например, с ее помощью можно:
- Получить подвыборку данных, отфильтровав только нужные записи. Так можно собрать продажи за определенный период времени или список клиентов из определенного города
- Найти данные по конкретным значениям. Так аналитик может найти все продажи с определенным идентификатором товара или клиентов с определенным именем
- Исключить нежелательные данные из результатов запроса. Например, можно исключить товары с нулевым количеством продаж или клиентов с неправильными контактными данными.
- Проанализировать данные по определенным условиям. Например, можно изучить продажи только для определенного типа товаров или клиентов определенного возраста
В этом уроке мы попрактикуемся в решении подобных задач — для этого будем использовать уже знакомую нам базу данных.
Оператор WHERE
Оператор WHERE
позволяет включить в результаты запроса только те строки, которые соответствуют нашим условиям. Для примера представим, что нам нужно выбрать все магазины в Нью-Йорке:
SELECT *
FROM stores
WHERE city = 'New York';
В результате мы увидим один магазин:
Большинство СУБД поддерживают обычные условные операторы:
=
<
>
>=
<=
!=
<>
Еще можно использовать логические операторы:
AND
— логическое ИOR
— логическое ИЛИ
В сочетании с круглыми скобками они возвращают строки, удовлетворяющие нескольким условиям.
С помощью оператора AND
выберем продажи, сделанные в определенный период времени:
SELECT *
FROM sales
WHERE sale_date >= '2023-01-01' AND sale_date <= '2023-01-31';
Получим такой результат — запрос вернет все продажи с 1 января 2023 года по 31 января 2023 года:
Еще для определения диапазона значений можно использовать оператор BETWEEN
. Попробуем написать запрос с тем же результатом, заменив условные операторы на BETWEEN
:
SELECT *
FROM sales
WHERE sale_date BETWEEN '2023-01-01' AND '2023-01-31';
Еще можно объединять условия фильтрации с помощью оператора OR
:
SELECT *
FROM stores
WHERE region = 'North America' OR region = 'Europe';
В этом примере запрос выбирает строки, где значение столбца region
равно 'North America'
или 'Europe'
. В результате мы видим все магазины из этих двух регионов:
Обращение к столбцу по псевдониму
Начинающие аналитики часто пытаются отфильтровать столбец по псевдонимам. Для примера представим, что нам нужно вывести сумму продаж конкретного товара, если его купили более ста раз.
Пишем очевидный на первый взгляд запрос:
SELECT SUM(quantity) AS total_sales
FROM sales
WHERE total_sales > 100;
Такой запрос не выполнится и вернет ошибку. Дело в том, что оператор WHERE
обрабатывается перед оператором SELECT
, когда псевдоним total_sales
еще не создан.
Эту ошибку можно устранить с помощью вложенного запроса:
SELECT *
FROM
(
SELECT SUM(quantity) AS total_sales
FROM sales
)
WHERE total_sales > 100
Здесь мы используем тот факт, что оператор FROM
обрабатывается перед оператором WHERE
. При вложении исходного запроса в оператор FROM
его результаты возвращаются до того, как оператор WHERE
обработает внешний запрос. Поэтому здесь оператор увидит наш псевдоним total_sales
.
Вложенный запрос вернет такой результат:
Этот прием может быть полезен, когда мы хотим поменять названия столбцов результирующего множества.
Выводы
В этом уроке мы изучили фильтрацию данных и узнали следующее:
- Фильтрация данных позволяет извлечь только те строки, которые соответствуют определенным условиям
- Фильтрация помогает решать разные аналитические задачи — получать подвыборки данных, искать по конкретным значениям, исключать нежелательные данные и анализировать данные по определенным условиям
- В SQL для фильтрации данных используется оператор
WHERE
. Он позволяет указать условия, которым должны соответствовать строки данных. - Для определения условий фильтрации оператор
WHERE
может использовать условные операторы=
,<
,>
,<=
,>=
,!=
и<>
- Оператор
BETWEEN AND
помогает определить диапазон значений в фильтрации данных - Условия фильтрации можно объединять с помощью операторов
AND
иOR
- При использовании псевдонимов для столбцов в
SELECT
-запросе, нельзя обращаться к ним непосредственно в оператореWHERE
. Вместо этого можно использовать вложенный запрос для доступа к псевдонимам
Далее в курсе мы изучим оператор GROUP BY
, который агрегирует данные по определенным критериям, проводит группировку и подсчитывает агрегатные функции на уровне групп данных.
Дополнительные материалы
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.