KWALIFIKACJA INF3 - CZERWIEC 2015

PYTANIE NR 15.
Baza danych zawiera tabelę o nazwie pracownicy o polach: nazwisko, imie, pensja, wiek. Jak wygląda składnia polecenia wyznaczającego średnią pensję pracowników?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Średnią wartość liczbowej kolumny w tabeli wyznacza się funkcją agregującą AVG().
Poprawne zapytanie wybiera wynik agregacji z kolumny pensja i wskazuje tabelę pracownicy w klauzuli FROM. Pozostałe propozycje używają innej funkcji lub agregują niewłaściwe pole.

Pełne wyjaśnienie:

W relacyjnych bazach danych do obliczania średniej arytmetycznej wartości w kolumnie liczbowej stosuje się funkcję agregującą AVG(). Funkcje agregujące przetwarzają wiele wierszy i zwracają jedną wartość (np. średnią, sumę, minimum).

Dlatego poprawna postać zapytania ma postać:

SELECT AVG(pensja) FROM pracownicy

Kluczowe elementy są dwa:

  • AVG(pensja) – wskazuje, że liczymy średnią z kolumny pensja. Kolumna powinna mieć typ liczbowy, bo średnia dotyczy liczb.
  • FROM pracownicy – określa tabelę, z której pobierane są wiersze do agregacji.

Odpowiedź z VAR(pensja) nie spełnia warunku zadania, bo dotyczy wariancji, a nie średniej. Propozycja z FROM nazwisko jest też nielogiczna, ponieważ nazwisko jest nazwą pola (kolumny), a nie tabeli. Zapytanie VAR(pracownicy) INTO pensja miesza pojęcia: jako argument funkcji podano nazwę tabeli zamiast kolumny oraz zastosowano INTO w sposób niepasujący do prostego zwrócenia wyniku. Z kolei AVG(nazwisko) INTO pensja próbuje liczyć średnią z pola tekstowego, co jest błędem typu danych i sensu obliczenia.

W praktyce, jeśli trzeba policzyć średnią dla części pracowników (np. tylko pełnoletnich), dopisuje się warunek WHERE, a jeśli dla grup (np. działów) – stosuje się GROUP BY. W tym zadaniu wystarcza jednak podstawowa agregacja całej tabeli.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
AVG() to funkcja agregująca, która oblicza średnią arytmetyczną wartości w wybranej kolumnie (zwykle liczbowej). Z wielu rekordów zwraca jedną wartość, np. średnią pensję z kolumny pensja.
Stosuje się zapytanie w formie: SELECT AVG(pensja) FROM pracownicy. Funkcja AVG() liczy średnią z kolumny, a FROM wskazuje tabelę, z której mają zostać pobrane dane.
FROM określa źródło danych, czyli tabelę (lub widok), z której pobierane są wiersze do obliczeń. Bez FROM baza nie wie, z jakiego zbioru rekordów ma policzyć średnią.
Zwykle nie, bo średnia ma sens dla danych liczbowych. Większość systemów baz danych wymaga, aby argument AVG() był typu liczbowego (lub możliwego do konwersji na liczbę). Dla tekstu pojawi się błąd lub wynik bez znaczenia.
VAR() (w zależności od systemu) odnosi się do wariancji, czyli miary rozproszenia danych, a nie do średniej. AVG() mówi o poziomie przeciętnym, a wariancja o tym, jak bardzo wartości odbiegają od średniej.
Gdy średnia ma dotyczyć tylko części danych, np. pracowników powyżej 18 lat lub z pensją większą od zera. Wtedy dodaje się filtr, np. WHERE wiek >= 18, aby do AVG() trafiły tylko pasujące rekordy.
Trzeba dodać kolumnę grupującą w SELECT i użyć GROUP BY. Przykład: SELECT dzial, AVG(pensja) FROM pracownicy GROUP BY dzial. Wtedy wynik zawiera średnią dla każdej grupy osobno.
Spacja między nazwą funkcji a nawiasem zwykle nie zmienia znaczenia, ale w wielu materiałach i przykładach przyjęty jest zapis bez spacji: AVG(pensja). Taki zapis jest czytelniejszy i bardziej zgodny z powszechnymi konwencjami.
W większości popularnych DBMS wartości NULL nie są liczone do średniej (są pomijane), a mianownik stanowi liczba niepustych wartości. To ważne na egzaminie: NULL zwykle nie jest traktowane jak 0.
Najczęstsze pomyłki to: użycie złej funkcji (np. VAR zamiast AVG), wskazanie złej tabeli w FROM, próba liczenia średniej z pola tekstowego oraz mieszanie składni (np. niepotrzebne INTO). Warto sprawdzać: kolumna liczbowa + poprawne FROM.
info

To pytanie poprawnie rozwiązuje 65% zdających egzamin. średnie

Według specjalistów z branży: "Średnią wartość liczbowej kolumny w tabeli wyznacza się funkcją agregującą AVG().Poprawne zapytanie wybiera wynik agregacji z kolumny pensja i wskazuje tabelę pracownicy w klauzuli FROM."

Źródła:

  • PostgreSQL Documentation: Aggregate Functions (AVG), https://www.postgresql.org/docs/current/functions-aggregate.html - accessed 2026-03-04
  • MySQL 8.0 Reference Manual: Aggregate (GROUP BY) Functions and AVG(), https://dev.mysql.com/doc/refman/8.0/en/group-by-functions.html - accessed 2026-03-04
  • SQLite Documentation: Built-in Aggregate Functions (avg), https://www.sqlite.org/lang_aggfunc.html - accessed 2026-03-04

Materiały:

  • Dokumentacja wybranego DBMS (np. PostgreSQL/MySQL/SQLite) – rozdział o funkcjach agregujących
  • Materiały kursowe z podstaw SQL: SELECT, FROM, funkcje agregujące
  • Zestawy zadań egzaminacyjnych z zakresu baz danych (agregacja i zapytania SELECT)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego