KWALIFIKACJA INF3 - WRZESIEŃ 2014

PYTANIE NR 15.
Którego ze słów kluczowych języka SQL należy użyć, aby wyeliminować duplikaty?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
DISTINCT stosuje się w zapytaniu SELECT, aby zwrócić tylko unikalne wiersze (usunąć powtórzenia w wyniku). LIKE służy do dopasowania wzorca, ORDER BY jedynie sortuje wynik, a GROUP BY grupuje dane (zwykle z agregacją) i nie jest równoważne prostemu "usuń duplikaty".

Pełne wyjaśnienie:

Słowo kluczowe DISTINCT w SQL służy do eliminowania duplikatów w wyniku zapytania. Najczęściej używa się go bezpośrednio po SELECT, aby zwrócić tylko unikalne wartości (lub unikalne kombinacje wartości, jeśli wybierasz kilka kolumn). Oznacza to, że jeśli wiele rekordów spełnia warunki zapytania i w wybranych kolumnach ma identyczne wartości, wynik zostanie "odchudzony" do jednej reprezentacji takiego powtórzenia.

Odpowiedź LIKE jest błędna, ponieważ to operator używany zwykle w warunkach filtrowania (np. w WHERE) do dopasowania tekstu do wzorca. Może zmniejszyć liczbę zwróconych wierszy, ale nie wykonuje mechanizmu usuwania duplikatów na poziomie wyniku.

Odpowiedź ORDER BY jest błędna, ponieważ odpowiada wyłącznie za kolejność zwróconych wierszy (sortowanie rosnąco/malejąco). Sortowanie nie usuwa powtórzeń — te same wiersze nadal będą występowały, jedynie w uporządkowanej kolejności.

Odpowiedź GROUP BY także jest błędna w tym kontekście, bo służy do grupowania rekordów według wskazanych kolumn, zwykle po to, aby obliczyć wartości agregujące (np. liczby, sumy). Chociaż w praktyce bywa używana do uzyskania "unikalnych" wartości, to zmienia semantykę zapytania (tworzy grupy) i w typowych zadaniach egzaminacyjnych nie jest traktowana jako właściwe narzędzie do prostego usunięcia duplikatów w SELECT.

Wskazówka egzaminacyjna: jeśli pytanie mówi wprost o "wyeliminowaniu duplikatów" w wyniku, najczęściej oczekiwane jest DISTINCT. Jeśli mowa o podsumowaniach i agregatach, wtedy pojawia się GROUP BY.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
DISTINCT usuwa powtarzające się wiersze z wyniku zapytania SELECT. Jeśli wybierasz jedną kolumnę, zwraca unikalne wartości tej kolumny. Jeśli wybierasz kilka kolumn, unikalność dotyczy całej kombinacji wartości w tych kolumnach.
Wstaw DISTINCT bezpośrednio po SELECT, np. wybierając kolumny, z których chcesz mieć wartości bez powtórzeń. Mechanizm działa na wynikach zapytania, więc usuwa duplikaty dopiero po zastosowaniu ewentualnych filtrów (np. WHERE).
ORDER BY odpowiada wyłącznie za sortowanie, czyli zmianę kolejności wyświetlania rekordów. Nie zmienia zestawu zwróconych danych, tylko je układa. Duplikaty nadal pozostają w wyniku, jedynie mogą stać obok siebie po posortowaniu.
Nie. GROUP BY grupuje rekordy w celu agregacji (np. COUNT, SUM). Czasem daje efekt "unikalnych wartości", ale zmienia logikę zapytania i jest używane głównie do podsumowań. DISTINCT jest prostszym i typowym sposobem na usunięcie duplikatów z wyniku.
LIKE służy do dopasowania tekstu do wzorca (np. zaczynającego się od danej frazy). Używa się go zwykle w WHERE. Może ograniczyć liczbę rekordów, ale nie wykonuje deduplikacji wyników jak DISTINCT.
Gdy w SELECT wybierasz więcej niż jedną kolumnę, DISTINCT usuwa duplikaty na podstawie całego wiersza wynikowego, czyli kombinacji wartości ze wszystkich wybranych kolumn. Jeśli różni się choć jedna kolumna, wiersze są traktowane jako różne.
Częsty błąd to mylenie deduplikacji wyniku z porządkowaniem (ORDER BY) albo z grupowaniem (GROUP BY). Inny błąd to oczekiwanie, że filtr (LIKE w WHERE) "usunie powtórzenia", choć on tylko wybiera pasujące rekordy.
DISTINCT usuwa duplikaty tylko w wyniku zapytania. Nie modyfikuje danych w tabeli. Jeśli chcesz usuwać duplikaty w samej tabeli, potrzebujesz operacji modyfikujących dane (np. DELETE) oraz zwykle reguł typu klucz unikalny.
Typowo łączy się agregację z deduplikacją, np. zlicza się unikalne wartości przez zastosowanie COUNT na zbiorze unikalnym. Ważne jest rozróżnienie: DISTINCT zapewnia unikalność, a funkcja zliczająca daje wynik liczbowy.
Jeśli w treści pojawiają się sformułowania typu "usunąć powtórzenia", "unikalne rekordy", "bez duplikatów" i jednocześnie pytanie dotyczy wyniku zapytania SELECT, najczęściej oczekiwanym słowem kluczowym jest DISTINCT, a nie sortowanie czy grupowanie.
info

Około 77% zdających odpowiada poprawnie na to pytanie. średnio łatwe

Specjaliści zwracają uwagę: "DISTINCT stosuje się w zapytaniu SELECT, aby zwrócić tylko unikalne wiersze (usunąć powtórzenia w wyniku)."

Źródła:

  • PostgreSQL Documentation: SELECT, opis użycia DISTINCT, https://www.postgresql.org/docs/current/sql-select.html (dostęp: 2026-02-28)
  • MySQL 8.0 Reference Manual: SELECT Statement, sekcja DISTINCT, https://dev.mysql.com/doc/refman/8.0/en/select.html (dostęp: 2026-02-28)
  • Microsoft Learn: SELECT DISTINCT (Transact-SQL), https://learn.microsoft.com/en-us/sql/t-sql/queries/select-distinct-transact-sql (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja wybranego silnika bazy danych (PostgreSQL/MySQL/SQL Server) dotycząca SELECT i DISTINCT
  • Ćwiczenia praktyczne: pisanie zapytań SELECT DISTINCT na przykładowych tabelach
  • Materiały kursowe z podstaw SQL (klauzule SELECT, WHERE, GROUP BY, ORDER BY)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego