KWALIFIKACJA INF3 - CZERWIEC 2017

PYTANIE NR 18.
Dana jest tabela o nazwie przedmioty z polami ocena i uczenID. Aby policzyć średnią ocen ucznia o ID równym 7, należy posłużyć się zapytaniem
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
AVG() oblicza średnią arytmetyczną wartości w kolumnie. Aby policzyć średnią ocen tylko dla jednego ucznia, trzeba najpierw wskazać tabelę w FROM, a następnie ograniczyć wiersze warunkiem WHERE uczenID = 7. COUNT() zlicza rekordy, a nie liczy średniej.

Pełne wyjaśnienie:

W SQL do obliczania średniej arytmetycznej służy funkcja agregująca AVG(). Funkcje agregujące działają na zbiorze wierszy zwróconych przez zapytanie, więc kluczowe są dwa elementy:

  • Wskazanie źródła danych – czyli tabeli w klauzuli FROM (tu: przedmioty).
  • Ograniczenie zbioru do właściwego ucznia – czyli warunek w klauzuli WHERE (tu: uczenID = 7).

Zapytanie SELECT AVG(ocena) FROM przedmioty WHERE uczenID = 7; najpierw filtruje wiersze tabeli do tych, które dotyczą ucznia o identyfikatorze 7, a dopiero potem liczy średnią z wartości w kolumnie ocena w przefiltrowanym zbiorze.

Odpowiedzi z błędną składnią (np. zaczynające się od "AVG SELECT" lub "COUNT SELECT") są niepoprawne, ponieważ w SQL obowiązuje ustalony porządek słów kluczowych: najpierw SELECT, potem lista wyrażeń (tu: funkcja), następnie FROM i opcjonalnie WHERE.

Zapytanie z SELECT COUNT(ocena) ... jest poprawne składniowo, ale rozwiązuje inne zadanie: COUNT() zlicza, ile niepustych wartości znajduje się w kolumnie (czyli ile ocen ma uczeń), a nie jaka jest ich średnia. To częsta pułapka: student kojarzy "statystykę" z liczeniem, ale nie dopasowuje funkcji do polecenia "średnia".

W praktyce warto zapamiętać: AVG = średnia, COUNT = liczba, a WHERE zawęża dane do analizowanego przypadku.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
AVG() to funkcja agregująca, która oblicza średnią arytmetyczną wartości w wybranej kolumnie (np. ocen). Działa na zbiorze wierszy zwróconych przez zapytanie, dlatego zwykle łączy się ją z FROM oraz warunkami WHERE lub grupowaniem GROUP BY.
Użyj zapytania z AVG() i zawęź wiersze do konkretnego ucznia w klauzuli WHERE, np. po identyfikatorze. Schemat jest stały: SELECT AVG(kolumna) FROM tabela WHERE warunek. Dzięki temu średnia liczona jest tylko z ocen przypisanych do danego ucznia.
Bez WHERE funkcja AVG() policzy średnią ze wszystkich wierszy w tabeli, czyli ze wszystkich ocen wszystkich uczniów. Klauzula WHERE filtruje rekordy i zostawia tylko te spełniające warunek (np. uczenID = 7), więc wynik dotyczy wyłącznie wskazanej osoby.
Nie. COUNT() zlicza liczbę wartości/rekordów (np. ile ocen ma uczeń), a AVG() oblicza średnią arytmetyczną. To zupełnie inne znaczenie biznesowe wyniku. COUNT() bywa używane pomocniczo, np. do sprawdzenia, z ilu ocen liczona jest średnia.
Oznacza obliczenie średniej z kolumny ocena dla wszystkich wierszy w tabeli przedmioty. Jeśli tabela zawiera oceny wielu uczniów, taki wynik będzie "globalną" średnią. Aby policzyć średnią dla jednego ucznia, trzeba dodać warunek w WHERE.
Najczęściej myli się kolejność elementów zapytania (np. wpisuje funkcję przed SELECT), pomija FROM, albo próbuje używać słów kluczowych w złym miejscu. Warto pamiętać prosty schemat: SELECT (co liczę) → FROM (skąd) → WHERE (dla kogo/jakie wiersze).
GROUP BY jest potrzebne, gdy chcesz policzyć średnie dla wielu uczniów jednocześnie (np. średnia dla każdego uczenID). Wtedy piszesz AVG(ocena) oraz dodajesz grupowanie po identyfikatorze. Gdy interesuje Cię jeden konkretny uczeń, zwykle wystarcza filtr w WHERE.
W typowych silnikach baz danych wartości puste (NULL) nie są wliczane do obliczeń AVG(). Oznacza to, że średnia liczona jest z dostępnych ocen, a nie z "braków". Na egzaminie warto rozróżniać brak danych (NULL) od np. zera, bo to wpływa na wynik agregacji.
Możesz wykonać dodatkowe zapytanie z COUNT(ocena) z tym samym filtrem WHERE. W praktyce często łączy się to w jednym zapytaniu (AVG i COUNT obok siebie), aby jednocześnie widzieć średnią i liczbę ocen użytych do obliczenia.
Szukaj trzech elementów: SELECT AVG(…) (średnia), FROM nazwa_tabeli (źródło danych) oraz WHERE z warunkiem na identyfikator (zawężenie do ucznia). Jeśli widzisz COUNT albo brak WHERE przy pytaniu o jednego ucznia, to sygnał ostrzegawczy.
info

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

Eksperci podkreślają: "AVG() oblicza średnią arytmetyczną wartości w kolumnie."

Źródła:

  • PostgreSQL Documentation: Aggregate Functions (AVG), https://www.postgresql.org/docs/current/functions-aggregate.html - accessed 2026-02-27
  • MySQL 8.0 Reference Manual: Aggregate Function AVG(), https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html#function_avg - accessed 2026-02-27
  • SQLite Documentation: Core Functions (aggregate functions including avg), https://www.sqlite.org/lang_aggfunc.html - accessed 2026-02-27

Materiały:

  • Dokumentacja wybranego silnika bazy danych (PostgreSQL/MySQL/SQLite) – funkcje agregujące
  • Ćwiczenia SQL: zapytania z WHERE oraz funkcjami AVG/COUNT/SUM
  • Notatki: kolejność elementów zapytania SELECT (SELECT → FROM → WHERE)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego