KWALIFIKACJA INF3 - PAŹDZIERNIK 2016

PYTANIE NR 18.
Dana jest tabela programisci o polach: id, nick, ilosc_kodu, ocena. Pole ilosc_kodu zawiera liczbę linii kodu napisanych przez programistę w danym miesiącu. Aby policzyć sumę linii kodu, który napisali wszyscy programiści, należy użyć polecenia
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Aby policzyć łączną liczbę linii kodu wszystkich programistów, trzeba zsumować wartości z jednej kolumny liczbowej.
Zapytanie SELECT SUM(ilosc_kodu) FROM programisci; agreguje dane z kolumny ilosc_kodu w całej tabeli. Pozostałe propozycje mają złą składnię lub używają niewłaściwej funkcji agregującej.

Pełne wyjaśnienie:

W SQL funkcje agregujące służą do obliczania wartości zbiorczych dla wielu wierszy naraz. Jeśli kolumna ilosc_kodu przechowuje liczbę linii kodu napisanych przez każdego programistę w miesiącu, to "suma linii kodu wszystkich programistów" oznacza sumę wszystkich wartości z tej kolumny.

Poprawne zapytanie:

SELECT SUM(ilosc_kodu) FROM programisci;

Dlaczego to działa?

  • FROM programisci wskazuje tabelę jako źródło danych.
  • SUM(ilosc_kodu) dodaje wszystkie wartości liczbowe z kolumny ilosc_kodu i zwraca jedną liczbę jako wynik.

Dlaczego pozostałe odpowiedzi są błędne:

  • Wariant z SUM(ocena) FROM ilosc_kodu miesza nazwy: sumuje inną kolumnę oraz używa ilosc_kodu jakby było tabelą, co jest niezgodne z opisem struktury.
  • Wariant z COUNT(programisci) sprawdzałby liczbę elementów (zwykle liczbę wierszy lub nie-NULL w kolumnie), a nie sumę wartości. Dodatkowo ponownie wskazuje ilosc_kodu jako tabelę.
  • Wariant z MAX(ilosc_kodu) zwróciłby największą liczbę linii kodu wśród programistów (rekord "najbardziej produktywny"), a nie łączną sumę.

Wskazówka egzaminacyjna: gdy w treści jest "suma", szukaj SUM(); gdy "ile rekordów", szukaj COUNT(); gdy "największa/najmniejsza wartość", szukaj MAX()/MIN(). Zawsze sprawdzaj też, czy w klauzuli FROM podano tabelę, a w nawiasie funkcji agregującej kolumnę.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Funkcja SUM() oblicza sumę wartości liczbowych w wybranej kolumnie dla zestawu wierszy i zwraca jedną wartość. Najczęściej używa się jej z zapytaniem SELECT, np. do podsumowań w raportach i statystykach.
Użyj schematu: SELECT SUM(nazwa_kolumny) FROM nazwa_tabeli;. Kolumna musi przechowywać dane liczbowe, a klauzula FROM musi wskazywać tabelę, z której mają zostać pobrane wiersze.
SUM() agreguje wartości z pola (kolumny) w wielu wierszach. Tabela jest wskazywana osobno w FROM jako źródło danych. Pomylenie tych ról prowadzi do błędów składni lub zapytania, które nie odpowiada na pytanie z treści.
SUM() dodaje wartości w kolumnie, COUNT() zlicza wiersze lub wartości nie-NULL, a MAX() zwraca największą wartość z kolumny. W zadaniach egzaminacyjnych słowa "suma", "ile" oraz "największa" są typowymi wskazówkami, którą funkcję wybrać.
W większości systemów baz danych SUM() ignoruje wartości NULL (traktuje je jak "brak danych"), a sumuje tylko liczby. Jeśli wszystkie wartości są NULL, wynik może być NULL. W praktyce można stosować funkcje typu COALESCE, aby zamieniać NULL na 0.
GROUP BY jest potrzebne, gdy chcesz policzyć sumy w grupach, np. suma linii kodu dla każdego programisty: SUM(ilosc_kodu) grupowane po identyfikatorze lub nicku. Gdy potrzebujesz jednej sumy dla całej tabeli, GROUP BY nie jest wymagane.
MAX() nie dodaje wartości, tylko wybiera jedną największą. To odpowiada na pytanie "kto ma najwięcej" lub "jaka jest największa wartość", a nie "ile łącznie". W raportach to różne miary: maksimum opisuje rekord skrajny, a suma opisuje całość.
Potrzebujesz kolumny z datą/miesiącem (np. miesiac lub data). Wtedy dodajesz warunek WHERE, np. filtr na konkretny miesiąc. Bez takiej kolumny w tabeli nie da się wiarygodnie ograniczyć danych do jednego miesiąca.
SUM() przyjmuje zwykle jedno wyrażenie. Jeśli chcesz zsumować kilka kolumn, możesz stworzyć wyrażenie, np. SUM(kol1 + kol2), o ile ma to sens biznesowy i typy danych są liczbowe. Częściej jednak liczy się osobne sumy dla osobnych miar.
Najczęstsze problemy to: wpisanie w FROM nazwy kolumny zamiast tabeli, pomylenie SUM z COUNT, sumowanie niewłaściwej kolumny oraz brak filtrowania WHERE, gdy w treści jest warunek (np. miesiąc, dział, status). Pomaga czytanie zapytania "na głos".
info

To pytanie poprawnie rozwiązuje 83% zdających egzamin. średnio łatwe

Eksperci podkreślają: "Pozostałe propozycje mają złą składnię lub używają niewłaściwej funkcji agregującej."

Źródła:

  • MySQL 8.0 Reference Manual: "Aggregate (GROUP BY) Functions" – opis funkcji SUM(), https://dev.mysql.com/doc/refman/8.0/en/aggregate-functions.html (dostęp: 2026-03-02)
  • PostgreSQL Documentation: "Aggregate Functions" – SUM, https://www.postgresql.org/docs/current/functions-aggregate.html (dostęp: 2026-03-02)
  • Microsoft Learn (SQL Server): "SUM (Transact-SQL)", https://learn.microsoft.com/en-us/sql/t-sql/functions/sum-transact-sql (dostęp: 2026-03-02)

Materiały:

  • Dokumentacja DBMS (MySQL/PostgreSQL) dotycząca funkcji agregujących
  • Ćwiczenia SQL: agregacje (SUM/AVG/COUNT) na przykładowych tabelach
  • Materiały do INF.3 z zakresu baz danych i języka SQL (zapytania SELECT)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego