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

SELECT AVG(cena) FROM uslugi; Funkcja agregująca AVG użyta w zapytaniu ma za zadanie

SELECT AVG(cena) FROM uslugi;
Funkcja agregująca AVG użyta w zapytaniu ma za zadanie
A. policzyć, ile jest usług dostępnych w tabeli.
B. obliczyć średnią arytmetyczną cen wszystkich usług.
C. wskazać najwyższą cenę za usługi.
D. zsumować koszt wszystkich usług.
Funkcja AVG w SQL służy do obliczania średniej arytmetycznej z wartości liczbowych w wybranej kolumnie, więc w zapytaniu SELECT AVG(cena) FROM uslugi; baza danych zwróci jedną wartość: przeciętną cenę usług zapisanych w tabeli uslugi. To jest klasyczna funkcja agregująca, czyli taka, która analizuje wiele rekordów i zwraca wynik zbiorczy. W praktyce przydaje się to np. w panelu administracyjnym firmy usługowej, gdy chcemy szybko sprawdzić średni koszt usługi, przygotować raport cenowy albo porównać ceny między kategoriami. Warto pamiętać, że AVG pomija wartości NULL, czyli brak ceny nie jest traktowany jak 0. Moim zdaniem to jedna z tych funkcji, które naprawdę warto znać, bo pojawia się ciągle w raportach. Dobrą praktyką jest nadanie wynikowi aliasu, np. SELECT AVG(cena) AS srednia_cena FROM uslugi;, a przy danych finansowych stosowanie typu DECIMAL zamiast FLOAT, żeby uniknąć dziwnych błędów zaokrągleń.
W tym zapytaniu łatwo pomylić funkcje agregujące, bo wszystkie działają na wielu rekordach naraz i zwracają jakiś wynik zbiorczy. AVG nie sumuje jednak kosztu wszystkich usług. Do tego służy funkcja SUM, która dodałaby wszystkie wartości z kolumny cena i pokazała całkowitą kwotę. To byłoby sensowne np. przy liczeniu łącznej wartości zamówień, ale nie przy pytaniu o średnią cenę. AVG działa inaczej: bierze sumę cen i dzieli ją przez liczbę cen, które faktycznie istnieją w danych. Nie wskazuje też najwyższej ceny, bo tym zajmuje się MAX. Jeśli chcemy znaleźć najdroższą usługę, używamy właśnie MAX(cena), czasem razem z ORDER BY i LIMIT, gdy potrzebujemy też nazwy tej usługi. Samo AVG nie mówi, który rekord jest największy. Nie liczy również liczby usług w tabeli, ponieważ do tego używa się COUNT, najczęściej COUNT(*) dla liczby wierszy albo COUNT(cena), gdy interesują nas tylko rekordy z podaną ceną. Typowy błąd polega na tym, że ktoś widzi kolumnę cena i myśli ogólnie o operacji na wszystkich usługach, ale nie rozróżnia znaczenia nazw funkcji. W SQL nazwy agregatów są bardzo konkretne: AVG to average, czyli średnia; SUM to suma; MAX to maksimum; COUNT to liczba rekordów. Dodatkowo, jeśli w tabeli są wartości NULL, AVG je pomija, więc brak ceny nie zaniża średniej jak zero. To ważny szczegół w realnych bazach danych.

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. Wyślemy 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.