KWALIFIKACJA INF3 - PAŹDZIERNIK 2016

PYTANIE NR 17.
W bazie danych hurtowni zdefiniowano tabelę sprzedaz o polach: id, kontrahent, grupa_cenowa, obrot. Aby wyszukać wyłącznie kontrahentów z drugiej grupy cenowej, których obrót jest większy niż 4000 zł, należy zastosować polecenie
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawne zapytanie musi zwrócić tylko kolumnę "kontrahent" z tabeli "sprzedaz" oraz przefiltrować rekordy tak, by jednocześnie spełniały dwa warunki: "grupa_cenowa = 2" i "obrot > 4000". Dlatego w WHERE używa się operatora AND, a nie OR.

Pełne wyjaśnienie:

W zadaniu chodzi o wybranie wyłącznie tych kontrahentów, którzy spełniają dwa kryteria naraz:

  • należą do drugiej grupy cenowej (warunek: grupa_cenowa = 2),
  • mają obrót większy niż 4000 (warunek: obrot > 4000).

Aby to osiągnąć w SQL stosuje się zapytanie typu SELECT ... FROM ... WHERE ..., gdzie:

  • SELECT kontrahent oznacza, że wynikiem ma być lista wartości z kolumny "kontrahent" (projekcja jednej kolumny),
  • FROM sprzedaz wskazuje tabelę, z której pobierane są dane,
  • WHERE definiuje filtr (selekcję wierszy).

Kluczowa jest logika w WHERE. Sformułowanie "wyłącznie kontrahentów z drugiej grupy cenowej, których obrót jest większy niż 4000" wymaga koniunkcji, czyli użycia operatora AND. Dzięki temu do wyniku trafią tylko rekordy spełniające oba warunki jednocześnie.

Odpowiedź z warunkiem OR jest błędna, bo OR zwraca wiersze spełniające co najmniej jeden z warunków: w praktyce dostałbyś też kontrahentów z inną grupą cenową, jeśli tylko ich obrót przekracza 4000, oraz kontrahentów z grupy 2 nawet wtedy, gdy obrót nie przekracza 4000.

Pozostałe błędne propozycje pokazują typową pomyłkę polegającą na myleniu nazw tabel i kolumn. W poprawnej składni po FROM musi wystąpić tabela (tu: "sprzedaz"), a nie kolumna. Dodatkowo wybieranie "sprzedaz" w SELECT miałoby sens tylko jako nazwa kolumny (której tu nie ma), a nie jako nazwa tabeli. Z perspektywy praktycznej: takie błędy skutkują komunikatami składniowymi lub pustymi/niepoprawnymi wynikami raportu.

Wskazówka egzaminacyjna: gdy w treści pojawia się "wyłącznie" i lista warunków połączona logiką "i", niemal zawsze szukasz w WHERE operatora AND.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Klauzula WHERE filtruje wiersze zwracane przez zapytanie. Określasz w niej warunki, które rekord musi spełnić, aby pojawił się w wyniku (np. równość, zakres, porównanie liczbowe). Bez WHERE zwykle otrzymasz wszystkie rekordy z tabeli.
Operator AND oznacza koniunkcję: rekord zostanie zwrócony tylko wtedy, gdy wszystkie połączone warunki są prawdziwe. To typowy wybór, gdy treść zadania wymaga spełnienia kilku kryteriów jednocześnie (np. grupa cenowa i minimalny obrót).
OR działa jak alternatywa: wystarczy spełnienie jednego warunku. W konsekwencji do wyniku mogą trafić rekordy spoza oczekiwanej grupy (np. inna grupa cenowa, ale obrót powyżej progu) albo z grupy właściwej, lecz bez wymaganego obrotu.
Używa się operatora porównania >, np. obrot > 4000. Warunek ten zadziała poprawnie, jeśli kolumna "obrot" ma typ liczbowy. W zadaniach egzaminacyjnych zwykle zakłada się, że wartości liczbowe porównujemy bez cudzysłowów.
To tzw. projekcja: w wyniku otrzymasz tylko wartości z podanej kolumny, a nie cały rekord. Jest to przydatne w raportach i listach (np. lista kontrahentów do kontaktu). Jeśli potrzebujesz więcej danych, dopisujesz kolejne kolumny po przecinku.
Najczęściej myli się AND z OR, wpisuje złą nazwę tabeli po FROM, albo miesza nazwy tabel i kolumn. Częsty jest też błąd logiczny: zapomnienie jednego z warunków albo wpisanie go w niewłaściwej kolejności z brakującymi operatorami.
Logicznie zwykle nie: warunek1 AND warunek2 jest równoważne warunek2 AND warunek1. Ważne jest natomiast poprawne użycie nawiasów, gdy mieszasz AND i OR. W prostych zadaniach z samym AND kolejność nie wpływa na wynik.
Nawiasy są potrzebne, gdy w jednym WHERE występują jednocześnie AND i OR, bo decydują o kolejności łączenia warunków. Bez nawiasów łatwo uzyskać inny wynik niż zamierzony. Jeśli wszystkie warunki są połączone tylko AND, nawiasy zwykle nie są konieczne.
Najprościej uruchomić zapytanie i zweryfikować wynik: czy każdy rekord spełnia wszystkie kryteria. Pomaga też dopisanie dodatkowych kolumn (np. "grupa_cenowa", "obrot") tylko do testu, aby zobaczyć, czy filtr działa. Potem można wrócić do SELECT z samym "kontrahent".
Ćwicz krótkie kwerendy z WHERE na prostych tabelach: równość, >, <, zakresy, AND/OR oraz testowanie wyników. Utrwal też różnicę między tabelą (po FROM) a kolumną (po SELECT). Na egzaminie czytaj uważnie słowa "i", "lub", "wyłącznie".
info

Statystycznie 67% uczniów zna prawidłową odpowiedź. średnie

Specjaliści zwracają uwagę: "Poprawne zapytanie musi zwrócić tylko kolumnę "kontrahent" z tabeli "sprzedaz" oraz przefiltrować rekordy tak, by jednocześnie spełniały dwa warunki: "grupa_cenowa = 2" i "obrot &gt; 4000"."

Źródła:

  • PostgreSQL Documentation: "SELECT" (Query Language), sekcja o klauzuli WHERE i operatorach logicznych AND/OR, https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-02-27)
  • MySQL 8.0 Reference Manual: "SELECT Statement" oraz opis operatorów AND/OR w wyrażeniach, https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-02-27)
  • SQLite Documentation: "SELECT" i "WHERE clause" (filtrowanie wierszy), https://www.sqlite.org/lang_select.html (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja SQL wybranego silnika (sekcja SELECT i WHERE)
  • Ćwiczenia z logiki Boolean (AND/OR) w kontekście filtrów
  • Zestaw zadań z kwerend: selekcja, sortowanie, proste warunki

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego