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

Dana jest tabela przedmioty z polami ocena oraz uczenID. Aby wyświetlić identyfikatory uczniów, których średnia ocen jest większa od 4, należy użyć zapytania

A.
SELECT uczenID FROM przedmioty GROUP BY uczenID WHERE AVG(ocena) > 4;
B.
SELECT uczenID FROM przedmioty WHERE AVG(ocena) > 4;
C.
SELECT uczenID FROM przedmioty GROUP BY uczenID HAVING AVG(ocena) > 4;
D.
SELECT uczenID, AVG(ocena) FROM przedmioty WHERE ocena > 4;
Poprawne jest zapytanie: SELECT uczenID FROM przedmioty GROUP BY uczenID HAVING AVG(ocena) > 4;. Najpierw rekordy z tabeli przedmioty są dzielone na grupy według wartości pola uczenID. Dzięki temu wszystkie oceny jednego ucznia trafiają do jednej grupy. Następnie funkcja agregująca AVG(ocena) oblicza średnią ocen dla każdej takiej grupy. Warunek HAVING AVG(ocena) > 4 filtruje już gotowe grupy, czyli pozostawia tylko tych uczniów, których średnia jest większa od 4. Reguła do zapamiętania: WHERE filtruje pojedyncze wiersze przed grupowaniem, a HAVING filtruje grupy po użyciu GROUP BY. Takie zapytania stosuje się np. w raportach ocen, sprzedaży lub statystyk użytkowników.
Problem dotyczy filtrowania wyniku agregacji, czyli wartości obliczonej dla grupy rekordów. Zapytanie SELECT uczenID FROM przedmioty WHERE AVG(ocena) > 4; używa funkcji AVG w klauzuli WHERE, a WHERE działa przed obliczeniem agregatów, więc nie nadaje się do sprawdzania średniej. Zapytanie SELECT uczenID FROM przedmioty GROUP BY uczenID WHERE AVG(ocena) > 4; zawiera GROUP BY, ale warunek po grupowaniu powinien być zapisany w HAVING, a nie w WHERE. Zapytanie SELECT uczenID, AVG(ocena) FROM przedmioty WHERE ocena > 4; filtruje pojedyncze oceny większe od 4, a nie uczniów ze średnią większą od 4; dodatkowo brakuje GROUP BY dla pola uczenID. Typowy błąd polega na myleniu warunku dla wierszy z warunkiem dla grup. Poprawne zapytanie to: SELECT uczenID FROM przedmioty GROUP BY uczenID HAVING AVG(ocena) > 4;.

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.