Data Analyst Professional · Модуль 3 · Урок 10 із 51
WHERE, NULL, логічні умови й дати
Фільтр визначає scope висновку. Одна пропущена дужка, порівняння = NULL або неправильна верхня межа timestamp може змінити вибірку без помітної синтаксичної помилки.
WHERE залишає лише рядки, де умова TRUE
SELECT
order_id,
customer_id,
order_ts,
net_amount
FROM analytics.orders
WHERE status = 'completed'
AND net_amount > 0;У SQL умова може бути TRUE, FALSE або UNKNOWN. Рядки з FALSE і UNKNOWN не проходять WHERE. Саме тому NULL потребує окремого мислення.
AND, OR, NOT і дужки
-- Потрібні completed orders з UA або PL
WHERE status = 'completed'
AND (country_code = 'UA' OR country_code = 'PL')-- Без дужок OR може розширити scope неочікувано
WHERE status = 'completed'
AND country_code = 'UA'
OR country_code = 'PL'AND має вищий пріоритет за OR, але професійний запит використовує дужки для явного бізнес-правила навіть тоді, коли автор пам’ятає precedence.
NULL — не значення
| Потреба | Коректно | Помилка |
|---|---|---|
| знайти missing | email IS NULL | email = NULL |
| знайти відомі | email IS NOT NULL | email <> NULL |
| підставити label | COALESCE(region, ‘UNKNOWN’) | мовчки прирівняти NULL до реального регіону |
| порівняти nullable | явно визначити NULL-policy | очікувати двозначну логіку |
Порожній рядок — не NULL
'' є текстовим значенням нульової довжини. Якщо source змішує його з NULL, перевірте обидва стани й виправте контракт даних.
IN, BETWEEN і LIKE
status IN ('paid','shipped') — читабельний список точних значень.%term% шукає pattern, але може бути дорогим і чутливим до регістру залежно від СУБД.Дати: використовуйте напіввідкритий інтервал
-- Увесь серпень 2026 для timestamp
WHERE order_ts >= TIMESTAMP '2026-08-01 00:00:00'
AND order_ts < TIMESTAMP '2026-09-01 00:00:00'Форма >= start AND < next_start не втрачає записи останнього дня з часом і не залежить від максимальної точності timestamp. Окремо зафіксуйте timezone: календарний день Києва і день UTC мають різні межі.
Практика: truth table
- Сформулюйте filter scope звичайною мовою.
- Зробіть truth table для AND/OR і двох edge cases.
- Окремо порахуйте NULL та empty string у критичних полях.
- Перепишіть monthly timestamp filter як half-open interval.
- Порівняйте row count після кожної доданої умови.
Офіційні довідки
Готовність до тесту
Ви пояснюєте three-valued logic, пишете IS NULL, ставите дужки навколо OR-групи й використовуєте напіввідкриті межі для timestamp.
Закріпіть матеріал уроку
Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.