WHERE в SQL. 18 задач на фильтрацию данных
WHERE в SQL. 18 задач на фильтрацию данных

Полная версия

WHERE в SQL. 18 задач на фильтрацию данных

Язык: Русский
Год издания: 2026
Добавлена:
Настройки чтения
Размер шрифта
Высота строк
Поля

Глеб Зайцев

WHERE в SQL. 18 задач на фильтрацию данных

Перед первой задачей

Почему WHERE решает половину отчёта

Большинство ошибок в простых SQL-отчётах начинается не с JOIN и не с GROUP BY, а с неверного фильтра.

Один пропущенный набор скобок, неправильная граница BETWEEN или сравнение с NULL через равно могут тихо изменить весь результат.

Эта книга тренирует именно фильтры: маленькие таблицы, понятная цель, ожидаемый результат и объяснение, где строка вошла или не вошла в выборку.

Как работать с задачами

Перед запуском запроса попробуйте вручную отметить строки, которые должны пройти WHERE. Это лучший способ увидеть ошибку раньше движка.

Затем сравните свой список с ожидаемым результатом и обратите внимание на граничные значения: равно порогу, NULL, пустую строку и похожие статусы.

Все запросы рассчитаны на SQLite. Приёмы WHERE, IN, BETWEEN, LIKE, IS NULL, AND, OR и NOT полезны почти в любой SQL-системе.

Маршрут по задачам

1. Оставить только оплаченные заказы

2. Отобрать заказы в диапазоне суммы

3. Фильтровать заказы по дате

4. Найти товары по началу названия

5. Правильно проверить NULL

6. Использовать IN для набора статусов

7. Не забыть скобки вокруг OR

8. Исключить тестовые строки

9. Фильтровать по вычисленной сумме

10. Найти строки с непустым телефоном

11. Искать без учёта регистра

12. Отобрать активные товары с остатком

13. Фильтровать отрицанием

14. Найти подозрительно дешёвые продажи

15. Разделить входящие лиды по источникам

16. Проверить границы возраста

17. Поймать ошибку приоритета AND и OR

18. Собрать финальный фильтр каталога

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

Задача 1. Оставить только оплаченные заказы

Рабочий вопрос

Нужно показать заказы, которые уже оплачены, не смешивая их с новыми и отменёнными строками.

Данные

CREATE TABLE orders(id INTEGER, status TEXT, total INTEGER);

INSERT INTO orders VALUES (1,'paid',500),(2,'new',700),(3,'cancelled',300),(4,'paid',900);

Запрос

SELECT id, status, total

FROM orders

WHERE status = 'paid'

ORDER BY id;

Ожидаемый результат

[[1, "paid", 500], [4, "paid", 900]]

Почему работает

WHERE проверяет статус каждой строки.

В результат попадают только строки с точным значением paid.

new и cancelled не проходят условие и исчезают из выборки.

Где легко ошибиться

Не переводите paid в русскую подпись до фильтра, если в базе хранится именно технический статус.

Самостоятельная проверка

Добавьте заказ со статусом Paid с большой буквы. Попадёт ли он в результат?

Ответ: Нет, потому что строковое сравнение здесь проверяет точное значение paid.

Задача 2. Отобрать заказы в диапазоне суммы

Рабочий вопрос

Менеджеру нужны заказы от 300 до 800 включительно, чтобы проверить средний чек.

Данные

CREATE TABLE orders(id INTEGER, total INTEGER);

INSERT INTO orders VALUES (1,299),(2,300),(3,500),(4,800),(5,801);

Запрос

SELECT id, total

FROM orders

WHERE total BETWEEN 300 AND 800

ORDER BY id;

Ожидаемый результат

[[2, 300], [3, 500], [4, 800]]

Почему работает

BETWEEN включает обе границы.

300 и 800 проходят условие.

299 ниже диапазона, а 801 выше диапазона.

Где легко ошибиться

Если бизнес просит строго между 300 и 800, BETWEEN не подходит: нужны total > 300 и total < 800.

Самостоятельная проверка

Почему заказ на 800 попал в выборку, хотя это верхняя граница?

Ответ: Потому что BETWEEN в SQL включает нижнюю и верхнюю границы диапазона.

Задача 3. Фильтровать заказы по дате

Рабочий вопрос

Нужно выбрать заказы за первую неделю сентября по датам в формате YYYY-MM-DD.

Данные

CREATE TABLE orders(id INTEGER, order_date TEXT, total INTEGER);

INSERT INTO orders VALUES

(1,'2026-08-31',200),

(2,'2026-09-01',300),

(3,'2026-09-05',500),

(4,'2026-09-08',900);

Запрос

SELECT id, order_date, total

Конец ознакомительного фрагмента.

Текст предоставлен ООО «Литрес».

Прочитайте эту книгу целиком, купив полную легальную версию на Литрес.

Безопасно оплатить книгу можно банковской картой Visa, MasterCard, Maestro, со счета мобильного телефона, с платежного терминала, в салоне МТС или Связной, через PayPal, WebMoney, Яндекс.Деньги, QIWI Кошелек, бонусными картами или другим удобным Вам способом.

Конец ознакомительного фрагмента
Купить и скачать всю книгу