KWALIFIKACJA INF3 - STYCZEŃ 2019

PYTANIE NR 20.
Jaki wynik zwróci zapytanie z ramki wykonane na przedstawionej tabeli?
Ilustracja przedstawia zrzut ekranu z widokiem tabeli bazy danych oraz umieszczonym poniżej w ramce zapytaniem SQL.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapytanie
SELECT COUNT(DISTINCT wykonawca) FROM muzyka;
zlicza liczbę różnych wartości w kolumnie "wykonawca". W tabeli występują trzy unikalne nazwiska/identyfikacje wykonawców (jeden wykonawca powtarza się w dwóch wierszach), więc wynik z COUNT(DISTINCT ...) to 3.

Pełne wyjaśnienie:

Zapytanie SQL ma postać:

SELECT COUNT(DISTINCT wykonawca) FROM muzyka;

Kluczowe są tu dwa elementy:

  • COUNT(...) – funkcja agregująca, która zwraca jedną liczbę będącą wynikiem zliczania.
  • DISTINCT – nakazuje traktować powtórzenia tej samej wartości jako jedną, czyli zliczać tylko wartości unikalne.

W praktyce oznacza to: "policz, ilu jest różnych wykonawców w tabeli". Nie liczymy więc liczby wierszy, tylko liczbę unikalnych wpisów w kolumnie "wykonawca".

W przedstawionej tabeli są 4 rekordy, ale jeden wykonawca pojawia się więcej niż raz. Po wypisaniu wartości z kolumny "wykonawca" i usunięciu powtórzeń zostają 3 różne wartości. Dlatego poprawnym wynikiem jest 3.

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

  • "1" byłoby poprawne tylko wtedy, gdyby wszystkie rekordy miały tego samego wykonawcę.
  • "4" odpowiadałoby zliczeniu wszystkich wierszy (jak przy COUNT(*) lub COUNT(ID) bez DISTINCT), a nie liczbie różnych wykonawców.

Wskazówka egzaminacyjna: gdy widzisz COUNT(DISTINCT kolumna), zawsze najpierw odpowiedz sobie na pytanie: "ile jest unikalnych wartości w tej kolumnie?", niezależnie od liczby rekordów.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
COUNT zlicza elementy i zwraca jedną liczbę jako wynik zapytania agregującego. Najczęściej spotkasz COUNT(*) (liczba wierszy) albo COUNT(kolumna) (liczba niepustych wartości w kolumnie). W zadaniach egzaminacyjnych ważne jest rozróżnienie tych wariantów.
COUNT(DISTINCT kolumna) liczy tylko unikalne wartości w danej kolumnie. Jeśli ta sama wartość pojawia się w wielu rekordach, zostanie policzona tylko raz. To typowe rozwiązanie w raportach typu: "ilu różnych klientów/wykonawców jest w tabeli?".
Ponieważ DISTINCT usuwa powtórzenia wartości w kolumnie "wykonawca". Gdy wykonawca występuje w kilku rekordach, nie zwiększa to liczby unikalnych wykonawców. Liczba wierszy odpowiada raczej COUNT(*) bez DISTINCT, a tu zliczane są różne wartości.
W większości systemów SQL COUNT(kolumna) nie zlicza wartości NULL, a COUNT(DISTINCT kolumna) również nie uwzględnia NULL jako wartości do zliczania. W zadaniach egzaminacyjnych sprawdź, czy w kolumnie są puste/NULL i czy może to wpływać na wynik.
Najprościej: spisz wartości z danej kolumny, skreśl powtórzenia i policz, ile zostało różnych wpisów. To dokładnie symuluje działanie DISTINCT. Uważaj, by nie sugerować się liczbą rekordów, tylko liczbą różnych wartości.
COUNT(*) liczy wszystkie wiersze pasujące do zapytania, niezależnie od NULL w kolumnach. COUNT(kolumna) liczy tylko te wiersze, w których wskazana kolumna ma wartość niepustą (nie jest NULL). To częsty "haczyk" w zadaniach z agregacją.
DISTINCT jest wygodne, gdy chcesz usunąć duplikaty lub policzyć unikalne wartości (np. COUNT(DISTINCT wykonawca)). GROUP BY stosuje się, gdy potrzebujesz wyników w grupach (np. liczba płyt dla każdego wykonawcy). Obie konstrukcje mogą dawać podobne efekty, ale służą innym celom.
Zapytanie agregujące zwraca podsumowanie danych, zwykle w postaci jednej liczby lub kilku wartości zbiorczych. Używa funkcji takich jak COUNT, SUM, AVG, MIN, MAX. W tym typie zadań nie analizujesz pojedynczego rekordu, tylko wynik "zbiorczy" z całej tabeli.
Najczęstsze pomyłki to: liczenie wierszy zamiast unikalnych wartości, pominięcie słowa DISTINCT podczas czytania zapytania oraz nieuwzględnienie, że ta sama wartość może pojawić się w kilku rekordach. Pomaga wypisanie wartości kolumny i ręczne usunięcie duplikatów.
Tak, jeśli w SELECT jest tylko COUNT(DISTINCT ...) i nie ma GROUP BY, to wynik jest pojedynczą wartością (jedna kolumna, jeden wiersz). Więcej wierszy pojawia się dopiero, gdy dodasz GROUP BY lub dodatkowe kolumny w SELECT.
info

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

Specjaliści zwracają uwagę: "Zapytanie SELECT COUNT(DISTINCT wykonawca) FROM muzyka; zlicza liczbę różnych wartości w kolumnie "wykonawca"."

Źródła:

  • MySQL 8.0 Reference Manual: Aggregate Function Descriptions – COUNT(), https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_count (dostęp: 2026-03-31)
  • MySQL 8.0 Reference Manual: DISTINCT Optimization and Semantics (DISTINCT w zapytaniach), https://dev.mysql.com/doc/refman/8.0/en/distinct-optimization.html (dostęp: 2026-03-31)
  • MariaDB Knowledge Base: COUNT(), https://mariadb.com/kb/en/count/ (dostęp: 2026-03-31)

Materiały:

  • Dokumentacja MySQL: funkcje agregujące i COUNT
  • Ćwiczenia z SQL: GROUP BY, DISTINCT, COUNT
  • Kurs podstaw baz danych relacyjnych (model tabelaryczny, wiersze/kolumny)

Aktualizacja pytania: 03.04.2026



Aktualizacja pytania: 03.04.2026
📡 Brak połączenia internetowego