KWALIFIKACJA INF3 - STYCZEŃ 2016

PYTANIE NR 16.
W języku SQL klauzula DISTINCT instrukcji SELECT sprawi, że zwrócone dane
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Klauzula DISTINCT w instrukcji SELECT usuwa z wyniku zapytania wiersze powtarzające się (duplikaty) i zwraca tylko wartości unikalne dla wskazanych kolumn. Sortowanie realizuje ORDER BY, warunki filtracji WHERE, a grupowanie i agregacje dotyczą GROUP BY.

Pełne wyjaśnienie:

W SQL klauzula DISTINCT użyta w instrukcji SELECT powoduje, że wynik zapytania nie zawiera duplikatów. Oznacza to, że jeśli w tabeli występują wiersze, które dla wybranych kolumn mają identyczne wartości, to w zbiorze wynikowym pojawią się tylko raz.

Dlaczego poprawna jest odpowiedź "nie będą zawierały powtórzeń"?
Bo to właśnie jest podstawowa funkcja DISTINCT: eliminacja powtarzających się wierszy w wyniku dla wskazanego zestawu kolumn.

Dlaczego pozostałe odpowiedzi są błędne?

  • "zostaną posortowane" – sortowanie wyniku realizuje klauzula ORDER BY. DISTINCT sam w sobie nie gwarantuje żadnej kolejności wierszy.
  • "będą spełniały określony warunek" – filtrowanie rekordów według warunku logicznego wykonuje WHERE (a dla warunków na wynikach agregacji – HAVING). DISTINCT nie jest filtrem warunkowym, tylko mechanizmem unikalności.
  • "będą pogrupowane według określonego pola" – grupowanie i łączenie wierszy w grupy, często w celu użycia funkcji agregujących (SUM, COUNT itd.), to rola GROUP BY. DISTINCT nie tworzy grup i nie wykonuje agregacji; jedynie usuwa powtórzenia.

Wskazówka egzaminacyjna: zapamiętaj prostą mapę ról: WHERE = filtr, ORDER BY = kolejność, GROUP BY = grupy/agregacje, DISTINCT = unikalność wyniku.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
DISTINCT usuwa duplikaty ze zbioru wynikowego. Zwraca tylko unikalne wiersze dla wybranych kolumn, np. unikalne nazwy miast lub kategorii. Nie oznacza sortowania ani filtrowania warunkiem.
SQL rozdziela pojęcia: unikalność realizuje DISTINCT, a kolejność zapewnia ORDER BY. Bez ORDER BY baza może zwrócić wiersze w dowolnej kolejności, nawet gdy użyto DISTINCT.
Najczęściej używa się DISTINCT do budowy list wartości do interfejsu aplikacji, np. unikalnych kategorii, miast lub statusów. To typowe w aplikacjach WWW, gdzie trzeba zasilić menu, filtr lub selektor.
DISTINCT działa na zestawie kolumn wskazanych po SELECT. Jeśli wybierzesz dwie kolumny, unikalność dotyczy pary wartości (wiersza wynikowego), a nie każdej kolumny osobno.
DISTINCT tylko usuwa powtórzenia w wyniku. GROUP BY tworzy grupy i zwykle jest używany z agregacjami (np. COUNT, SUM). GROUP BY może dać podobny efekt, ale jego cel i składnia są inne.
Gdy chcesz wybrać tylko rekordy spełniające warunek, np. klienci z danego miasta lub produkty tańsze niż X, używasz WHERE. DISTINCT nie filtruje po warunku, tylko usuwa duplikaty.
W praktyce DISTINCT traktuje NULL jako wartość, która może się powtarzać w wyniku, więc wiele wierszy z NULL w tych samych kolumnach zostanie zredukowanych do jednego wiersza wynikowego.
Można użyć obu klauzul: DISTINCT dla unikalności, a ORDER BY dla kolejności prezentacji. Typowy schemat to SELECT DISTINCT ... FROM ... ORDER BY .... Dzięki temu wynik jest jednocześnie bez powtórzeń i uporządkowany.
DISTINCT wymaga wykrycia duplikatów, co zwykle oznacza dodatkowe operacje (np. sortowanie lub haszowanie) na wynikach. Przy dużych tabelach może to kosztować czas i pamięć, dlatego warto używać go świadomie.
Najczęściej myli się DISTINCT z ORDER BY (bo oba "porządkują" w potocznym sensie) oraz z GROUP BY (bo oba zmniejszają liczbę wierszy). Pomaga zapamiętać: WHERE=warunek, ORDER BY=kolejność, GROUP BY=grupy, DISTINCT=unikaty.
info

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

Specjaliści zwracają uwagę: "Klauzula DISTINCT w instrukcji SELECT usuwa z wyniku zapytania wiersze powtarzające się (duplikaty) i zwraca tylko wartości unikalne dla wskazanych kolumn."

Źródła:

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

Materiały:

  • Dokumentacja dialektu SQL używanego na zajęciach (np. PostgreSQL/MySQL/SQL Server) – rozdział o SELECT
  • Ćwiczenia: porównanie wyników zapytania z i bez DISTINCT na tej samej tabeli
  • Materiały o różnicach między DISTINCT a GROUP BY oraz o roli ORDER BY

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego