Przejdź do głównej treści

Kwalifikacja: INF.03 - Tworzenie i administrowanie stronami i aplikacjami internetowymi oraz bazami danych

Zawód: Technik informatyk, Technik programista

Kategorie: Programowanie webowe Bazy danych

Wskaż zapytanie, w którym zastosowano funkcję agregującą.

A.
SELECT DISTINCT produkt, cena FROM artykuly;
B.
SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2;
C.
SELECT imie, nazwisko FROM mieszkancy WHERE wiek > 18 ORDER BY wiek;
D.
SELECT nazwisko FROM firma WHERE pensja > 2000 LIMIT 10;
W tym zapytaniu użyto funkcji AVG(ocena), czyli klasycznej funkcji agregującej języka SQL. Funkcje agregujące wykonują obliczenia na wielu rekordach i zwracają jedną wartość wynikową, na przykład średnią, sumę, liczbę rekordów albo wartość minimalną i maksymalną. Tutaj SELECT AVG(ocena) FROM uczniowie WHERE klasa = 2; najpierw wybiera tylko uczniów z klasy 2, a dopiero potem liczy średnią z kolumny ocena dla tych wierszy. To jest ważna kolejność logiczna działania zapytania: FROM, WHERE, a później obliczenia w SELECT. W praktyce AVG stosuje się np. do liczenia średniej ocen, średniej pensji, średniej ceny produktu czy przeciętnego czasu realizacji zamówienia. Z mojego doświadczenia, warto od razu kojarzyć agregaty z funkcjami COUNT(), SUM(), AVG(), MIN() i MAX(). W dobrych praktykach SQL, gdy obok agregatu wybierasz zwykłe kolumny, zwykle trzeba użyć GROUP BY, aby jasno określić grupowanie danych. W tym przykładzie nie ma innych kolumn w SELECT, więc GROUP BY nie jest potrzebne.
W pozostałych zapytaniach pojawiają się elementy języka SQL, które mogą wyglądać „specjalnie”, ale nie są funkcjami agregującymi. DISTINCT usuwa powtarzające się kombinacje wartości z wyniku, czyli działa na unikalność rekordów, a nie liczy żadnej wartości zbiorczej. Można przez to pomylić go z agregacją, bo też w pewnym sensie redukuje wynik, ale technicznie nie jest funkcją typu AVG(), COUNT() czy SUM(). Warunek WHERE pensja > 2000 tylko filtruje rekordy przed ich zwróceniem, a LIMIT 10 ogranicza liczbę pokazanych wierszy. To jest typowe w raportach i listach pracowników, ale nie wykonuje obliczeń na zbiorze danych. Podobnie ORDER BY wiek wyłącznie sortuje rekordy, czyli zmienia kolejność prezentacji wyniku, nie przelicza danych. Częsty błąd myślowy polega na tym, że każde słowo kluczowe SQL uznaje się za „funkcję”, a to nie tak działa. Funkcja agregująca ma za zadanie zebrać wiele wartości z kolumny i wyprodukować wynik podsumowujący, na przykład średnią ocen albo liczbę zamówień. Moim zdaniem najprostszy test jest taki: jeśli zapytanie bez GROUP BY zwraca jedną wartość obliczoną z wielu wierszy, to bardzo możliwe, że używa agregatu. Samo filtrowanie, sortowanie, usuwanie duplikatów i ograniczanie liczby wyników to nadal operacje na rekordach, ale nie agregacja.

Wymagane logowanie

Ocenianie trudności pytań jest dostępne tylko dla zalogowanych użytkowników. Zaloguj się, aby skorzystać z pełni możliwości platformy.

Twoja ocena pomoże innym uczniom w przygotowaniu do egzaminu, a Tobie pozwoli na dostęp do spersonalizowanych statystyk.

Zgłoś błąd w pytaniu

Rozwiń sekcję i zmień pole, którego dotyczy błąd. Wysłane zostaną tylko zmienione sekcje.

Błędna kwalifikacja
Błąd w treści pytania
Błąd w treści odpowiedzi
Błąd w obrazie
Dane kontaktowe (opcjonalnie)
Podaj email, jeśli chcesz otrzymać informację o rozpatrzeniu zgłoszenia.