Извлечение и фильтрация данных: SELECT, FROM, WHERE, LIKE, IN - Антифрод-исследователь: От основ к продвинутым инструментам - Qpel.AI

Извлечение и фильтрация данных: SELECT, FROM, WHERE, LIKE, IN

Данный материал носит информационно-обучающий характер и не является юридической или финансовой консультацией. Применение полученных знаний на практике требует соблюдения законодательства и этических норм. Ответственность за любые действия, предпринятые на основе информации из курса, лежит на вас.

В прошлых модулях мы разобрали роль антифрод-исследователя, типы мошенничества и их индикаторы. Теперь вы понимаете, что искать. Пришло время освоить инструменты, которые помогут это найти. В основе любой аналитической работы — умение извлекать и обрабатывать данные. Начнём с SQL — языка структурированных запросов, фундамента для работы с базами данных.

Зачем антифрод-исследователю SQL?

SQL — универсальный язык для работы с реляционными базами данных. Там хранится большая часть информации: транзакции, пользователи, их действия и многое другое. Для антифрод-исследователя SQL — это:

  • Доступ к информации: Получайте нужные данные сами, без помощи разработчиков.
  • Гибкость анализа: Создавайте кастомные выборки для детального изучения подозрительных операций.
  • Эффективность: Быстро извлекайте большие объёмы данных для дальнейшей обработки.

Представьте: вам нужно проверить тысячи транзакций на аномалии. Вручную это невозможно. SQL автоматизирует процесс — достаточно задать нужные критерии.

Основы извлечения данных: SELECT и FROM

Самый базовый и часто используемый оператор в SQL — это SELECT. Он выбирает данные из одной или нескольких таблиц. Предложение FROM указывает, из какой таблицы брать данные.

Синтаксис:

SELECT column1, column2, ...
FROM table_name;

Или для выбора всех столбцов:

SELECT *
FROM table_name;

Пример: Допустим, у нас есть таблица transactions (транзакции) со столбцами transaction_id, user_id, amount, status, transaction_time.

Чтобы получить все данные из этой таблицы:

SELECT *
FROM transactions;

Чтобы получить только идентификатор транзакции и сумму:

SELECT transaction_id, amount
FROM transactions;

Совет: Всегда начинайте с SELECT * для новой таблицы, чтобы понять её структуру и доступные столбцы. Затем сужайте выборку до нужных данных.

Фильтрация данных: WHERE

Когда данных много, их нужно фильтровать по условиям. Для этого используем WHERE. Оно задаёт критерии, которым должны соответствовать строки для включения в результат.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE condition;

Примеры условий:

  • Равенство (=):

    -- Выбрать все транзакции со статусом 'fraud' (мошенничество)
    SELECT *
    FROM transactions
    WHERE status = 'fraud';
    
  • Неравенство (!= или <>):

    -- Выбрать все транзакции, которые НЕ являются 'success' (успешными)
    SELECT *
    FROM transactions
    WHERE status != 'success';
    
  • Больше/Меньше (>, <, >=, <=):

    -- Выбрать транзакции на сумму более 10000 рублей
    SELECT *
    FROM transactions
    WHERE amount > 10000;
    
  • Логические операторы (AND, OR, NOT): Комбинируют несколько условий.

    -- Выбрать мошеннические транзакции на сумму более 5000 рублей
    SELECT *
    FROM transactions
    WHERE status = 'fraud' AND amount > 5000;
    
    -- Выбрать транзакции со статусом 'pending' (в ожидании) или 'failed' (неудачные)
    SELECT *
    FROM transactions
    WHERE status = 'pending' OR status = 'failed';
    
    -- Выбрать все транзакции, кроме тех, что имеют статус 'success' и сумму менее 100
    SELECT *
    FROM transactions
    WHERE NOT (status = 'success' AND amount < 100);
    

Поиск по шаблону: LIKE

Оператор LIKE ищет строки, соответствующие шаблону. Полезен, когда нужно найти частичные совпадения в текстовых полях, например, в email-адресах или именах.

Вместе с LIKE используйте подстановочные символы:

  • % (процент) – любая последовательность из нуля или более символов.
  • _ (нижнее подчёркивание) – любой один символ.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;

Примеры:

-- Найти всех пользователей, чьи имена начинаются на 'Иван'
SELECT *
FROM users
WHERE name LIKE 'Иван%';

-- Найти все email-адреса в домене 'mail.ru'
SELECT *
FROM users
WHERE email LIKE '%@mail.ru';

-- Найти транзакции, в описании которых есть слово 'пополнение'
SELECT *
FROM transactions
WHERE description LIKE '%пополнение%';

-- Найти номера телефонов, которые начинаются с '79' и имеют ровно 11 цифр (например, 79XXXXXXXXX)
SELECT *
FROM users
WHERE phone_number LIKE '79_________'; -- 9 нижних подчеркиваний

Выбор из списка значений: IN

Оператор IN позволяет указать несколько возможных значений для столбца в условии WHERE. Это удобная альтернатива множеству операторов OR.

Синтаксис:

SELECT column1, column2, ...
FROM table_name
WHERE column_name IN (value1, value2, ...);

Пример:

-- Выбрать транзакции со статусом 'fraud', 'cancelled' (отменено) или 'refunded' (возвращено)
SELECT *
FROM transactions
WHERE status IN ('fraud', 'cancelled', 'refunded');

-- То же самое с использованием OR:
SELECT *
FROM transactions
WHERE status = 'fraud' OR status = 'cancelled' OR status = 'refunded';

Как видите, IN делает запрос читабельнее и короче, особенно при большом количестве значений.

Практическое задание

Представьте, вы работаете в крупном онлайн-магазине. Ваша задача: Найти все подозрительные транзакции за последний месяц, которые:

  1. Имеют статус "отклонено" (declined) или "возврат" (refund).
  2. Сумма транзакции превышает 5000 рублей.
  3. В описании транзакции (description) встречается слово "подарок" или "бонус".

Используйте таблицу orders со столбцами: order_id, user_id, amount, status, description, order_date.

Попробуйте написать SQL-запрос, который выведет order_id, user_id и amount для таких транзакций.

-- Ваш SQL-запрос здесь
SELECT order_id, user_id, amount
FROM orders
WHERE (status IN ('declined', 'refund') AND amount > 5000)
  AND (description LIKE '%подарок%' OR description LIKE '%бонус%');

Важно: В реальных базах данных названия столбцов и таблиц могут быть на русском языке или в другом формате. Всегда уточняйте схему базы данных, с которой работаете.

Вы только что освоили базовые, но крайне мощные инструменты для извлечения и фильтрации данных. Это первый шаг к тому, чтобы превратить сырые данные в полезную информацию для выявления мошенничества. Но что, если нам нужно не просто выбрать данные, а посчитать их количество, найти среднее значение или сумму? Об этом поговорим в следующем разделе, где освоим агрегацию данных.