WHERE to klauzula języka SQL filtrująca wiersze: z tabeli zwracane są tylko te rekordy, które spełniają podany warunek. Działa z operatorami porównania (=, <>, <, >), zakresami (BETWEEN), listami (IN), wzorcami tekstowymi (LIKE) i testem wartości pustych (IS NULL / IS NOT NULL); warunki łączy się przez AND i OR.
Dla analityka biznesowego WHERE to najczęściej używany element SQL, bo pytania biznesowe prawie zawsze dotyczą wycinka danych, nie całości. „Ilu pacjentów nie odwołało wizyty w tym kwartale?", „które przychodnie mają obłożenie poniżej 70%?" - każde z tych pytań to w praktyce SELECT z odpowiednim WHERE.
Przykład z bazy MediFlow - wizyty nieodbyte od początku roku w przychodni nr 7:
SELECT pacjent_id, data_wizyty, lekarz_id
FROM wizyty
WHERE status = 'no_show'
AND data_wizyty >= '2026-01-01'
AND przychodnia_id = 7;
Częsta pomyłka numer jeden, klasyk rozmów rekrutacyjnych: WHERE kolumna = NULL. To porównanie nigdy nie jest prawdziwe - NULL nie równa się niczemu, nawet samemu sobie; poprawnie jest WHERE kolumna IS NULL. Zapytanie z = NULL nie zgłosi błędu, po prostu zwróci zero wierszy, a raport pójdzie do zarządu z fałszywymi liczbami. Druga pomyłka: mylenie WHERE z HAVING. WHERE filtruje pojedyncze wiersze przed grupowaniem, HAVING filtruje wyniki agregacji po GROUP BY - warunek „przychodnie z ponad 500 wizytami miesięcznie" musi trafić do HAVING, bo dotyczy sumy, nie pojedynczego wiersza. Trzecia: łączenie AND z OR bez nawiasów. Kolejność wykonania potrafi po cichu zmienić sens całego warunku.