ID: 1719 Bazy danych Średnie

Źródło: Arkusze CKE

W bazie danych sklepu internetowego, w tabeli klienci znajdują się między innymi pola całkowite: punkty, liczbaZakupow oraz pole ostatnieZakupy typu DATE. Klauzula WHERE do kwerendy wybierającej dane klientów, którzy mają więcej niż 3000 punktów albo wykonali zakupy więcej niż 100 razy, a ostatnie zakupy wykonali co najmniej w roku 2022 ma postać

Warianty odpowiedzi

  1. A

    A. WHERE punkty > 3000 OR liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'

  2. B

    B. WHERE punkty > 3000 AND liczbaZakupow > 100 OR ostatnieZakupy >= '2022-01-01'

  3. C

    C. WHERE (punkty > 3000 OR liczbaZakupow > 100) AND ostatnieZakupy >= '2022-01'

  4. D

    D. WHERE punkty > 3000 AND liczbaZakupow > 100 AND ostatnieZakupy >= '2022-01-01'

Wyjaśnienie

W SQL kolejność wykonywania operatorów logicznych ma kluczowe znaczenie. Operator AND ma wyższy priorytet niż OR, co oznacza, że bez użycia nawiasów baza danych najpierw połączyłaby warunek liczby zakupów z datą ostatnich zakupów.

W naszym przypadku chcemy wyselekcjonować klientów, którzy spełniają przynajmniej jeden z dwóch warunków (dużo punktów LUB dużo zakupów), ale jednocześnie dla obu tych grup obowiązuje ten sam warunek dotyczący roku 2022.

Dlatego całą alternatywę musimy zamknąć w nawiasie: (punkty > 3000 OR liczbaZakupow > 100). Dopiero po tym nawiasie dopisujemy operator AND wraz z warunkiem daty. Tylko taka konstrukcja gwarantuje poprawną logikę zapytania.

Sprawdź się w praktyce

Rozwiąż pełny test próbny INF.03 albo wylosuj pojedyncze pytanie na szybką powtórkę.

Podobne pytania — Bazy danych