KWALIFIKACJA INF3 - STYCZEŃ 2023

PYTANIE NR 16.
Przedstawione zapytanie SELECT wykonane na tabeli przechowującej dane o uczestnikach konkursu ma za zadanie wybrać
Ilustracja przedstawia zapytanie SQL wykonane na tabeli w bazie danych, które ma na celu obliczenie różnicy wieku pomiędzy
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Poprawna interpretacja zapytania to wyznaczenie rozstępu wieku.
Jeśli w SELECT występuje odejmowanie wartości największej i najmniejszej (typowo MAX(wiek) - MIN(wiek)), wynikiem jest różnica wieku między najstarszym a najmłodszym uczestnikiem, a nie same wartości min i max ani średnia czy liczba osób.

Pełne wyjaśnienie:

W bazach danych często wykonuje się podsumowania kolumn liczbowych za pomocą funkcji agregujących. Dwie podstawowe funkcje to MAX (wartość największa) oraz MIN (wartość najmniejsza) w danej kolumnie.

Jeżeli zapytanie SELECT zwraca wyrażenie będące różnicą tych wartości (najczęściej zapisane jako MAX(wiek) - MIN(wiek)), to wynikiem nie jest ani "najstarszy" uczestnik jako rekord, ani para liczb minimalna/maksymalna, tylko jedna liczba opisująca rozstęp wieku w całej grupie. Taki wynik odpowiada na pytanie: o ile lat starszy jest najstarszy uczestnik od najmłodszego.

Dlaczego pozostałe odpowiedzi nie pasują?

  • "minimalny oraz maksymalny wiek uczestników" byłby wynikiem, gdyby zapytanie zwracało dwie kolumny (osobno MIN i osobno MAX), bez odejmowania.
  • "średnią arytmetyczną wieku uczestników" wymagałoby użycia funkcji AVG, ewentualnie SUM/COUNT w odpowiedniej kombinacji, a nie zestawu MAX i MIN połączonych odejmowaniem.
  • "liczbę najstarszych uczestników" dotyczy zliczania wierszy (COUNT) po uprzednim wybraniu osób o wieku równym maksimum. Samo obliczenie MAX i MIN oraz ich różnicy nie zlicza rekordów.

Wskazówka egzaminacyjna: gdy w odpowiedziach pojawiają się "min i max" oraz "różnica między skrajnościami", zwróć uwagę, czy w zapytaniu jest operator arytmetyczny (np. minus). To zwykle oznacza, że celem jest rozstęp (max-min), a nie same skrajne wartości.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Oznacza rozstęp (max-min) wartości w kolumnie, czyli różnicę między największą a najmniejszą wartością w zbiorze rekordów. Dla wieku będzie to liczba lat między najstarszym i najmłodszym uczestnikiem.
Najczęściej mylone są z AVG (średnia) i COUNT (liczba rekordów). MAX/MIN zwracają skrajne wartości kolumny, a AVG liczy średnią, natomiast COUNT zlicza wiersze (np. liczbę uczestników), nie "wiek".
Szukaj operatora odejmowania między agregatami, np. MAX(wiek) - MIN(wiek). Taki zapis daje jedną wartość liczbową opisującą rozpiętość danych, a nie dwie osobne kolumny minimalną i maksymalną.
MAX(wiek) zwraca tylko największy wiek w tabeli. Aby policzyć różnicę między skrajnościami, potrzebujesz także MIN(wiek) oraz działania arytmetycznego (odejmowania). Bez MIN nie wiesz, od czego odjąć maksimum.
Gdy w SELECT zwracasz dwie osobne agregacje, np. MIN(wiek) jako jedna kolumna i MAX(wiek) jako druga, bez wykonywania działań typu minus. Wtedy wynikiem są dwie liczby: najmniejsza i największa.
Najprościej użyć funkcji AVG, np. AVG(wiek). Alternatywnie można liczyć SUM(wiek)/COUNT(*), ale AVG jest czytelniejsze. Taki wynik odpowiada na inne pytanie niż rozstęp, bo opisuje przeciętny wiek.
Ma sens, gdy kolumna jest liczbowa i skale są porównywalne (np. wiek, cena). Trzeba uważać na błędy danych (np. literówki, wartości 0 lub 999), bo rozstęp może wyjść nienaturalnie duży i zafałszować wnioski.
To zwykle wymaga dwóch kroków: znalezienia maksimum (MAX(wiek)) i zliczenia rekordów, które mają wiek równy temu maksimum, np. COUNT(*) z warunkiem WHERE wiek = (SELECT MAX(wiek) ...). Samo MAX/MIN tego nie zlicza.
Bo to typowy przypadek w aplikacjach internetowych: tworzenie statystyk, raportów i podsumowań bez pobierania wszystkich rekordów do aplikacji. Agregacja w SQL jest szybsza i ogranicza ilość danych przesyłanych z serwera bazy.
Najczęstsze to: mylenie wyniku agregacji z listą rekordów, pomijanie operatorów arytmetycznych (minus, plus), utożsamianie każdego podsumowania z AVG oraz błędne zakładanie, że COUNT liczy "wiek" zamiast liczby wierszy.
info

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

Źródła:

  • PostgreSQL Documentation: Aggregate Functions (MAX, MIN, AVG, COUNT) — https://www.postgresql.org/docs/current/functions-aggregate.html (dostęp: 2026-03-01)
  • MySQL 8.0 Reference Manual: Group By Functions and Aggregate Functions — https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html (dostęp: 2026-03-01)
  • Microsoft Learn (SQL Server): MIN (Transact-SQL) oraz MAX (Transact-SQL) — https://learn.microsoft.com/en-us/sql/t-sql/functions/min-transact-sql oraz https://learn.microsoft.com/en-us/sql/t-sql/functions/max-transact-sql (dostęp: 2026-03-01)

Materiały:

  • Dokumentacja używanego systemu bazy danych: sekcja o funkcjach agregujących
  • Zadania ćwiczeniowe SQL: MIN, MAX, AVG, COUNT w praktyce
  • Materiały kursowe z podstaw baz danych i języka SQL dla INF.3

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego