Data Analyst Professional · Модуль 3 · Урок 10 із 51

WHERE, NULL, логічні умови й дати

Фільтр визначає scope висновку. Одна пропущена дужка, порівняння = NULL або неправильна верхня межа timestamp може змінити вибірку без помітної синтаксичної помилки.

90–120 хвFilter logicМінітест: 3 питання

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 — не значення

ПотребаКоректноПомилка
знайти missingemail IS NULLemail = NULL
знайти відоміemail IS NOT NULLemail <> NULL
підставити labelCOALESCE(region, ‘UNKNOWN’)мовчки прирівняти NULL до реального регіону
порівняти nullableявно визначити NULL-policyочікувати двозначну логіку

Порожній рядок — не NULL

'' є текстовим значенням нульової довжини. Якщо source змішує його з NULL, перевірте обидва стани й виправте контракт даних.

IN, BETWEEN і LIKE

INstatus IN ('paid','shipped') — читабельний список точних значень.
NOT INОбережно з NULL у списку або колонці; результат може стати UNKNOWN.
BETWEENВключає обидві межі. Для timestamp верхня межа календарного дня ризикова.
LIKE%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.

Практична перевірка · урок 10 з 51

Закріпіть матеріал уроку

Три сценарні питання. Для зарахування уроку потрібно дати щонайменше дві правильні відповіді.

1. Які рядки проходять WHERE?
2. Як правильно знайти NULL у колонці email?
3. Чим empty string відрізняється від NULL?