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

Słowa kluczowe: Funkcje agregujące w SQL SELECT w SQL SUM() w SQL

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.
SELECT MAX(ilosc_kodu) FROM programisci;
Źle. MAX zwraca tylko największą wartość w kolumnie, a nie sumę.
B.
SELECT SUM(ilosc_kodu) FROM programisci;
Dobrze. SUM dodaje wartości ilosc_kodu ze wszystkich wierszy tabeli programisci.
C.
SELECT SUM(ocena) FROM ilosc_kodu;
Źle. Sumuje kolumnę ocena, a po FROM stoi nazwa kolumny zamiast tabeli.
D.
SELECT COUNT(programisci) FROM ilosc_kodu;
Źle. Nazwy tabeli i kolumny są zamienione, a COUNT liczy wiersze, nie sumuje.

Pytanie z egzaminu CKE, październik 2016 (arkusz E.14-X-16.08).

Sumę linii kodu policzy zapytanie SELECT SUM(ilosc_kodu) FROM programisci;. Funkcja agregująca SUM dodaje wartości z podanej kolumny we wszystkich wierszach spełniających warunek, a bez klauzuli WHERE - w całej tabeli. Po FROM zawsze stoi nazwa tabeli, a w nawiasie funkcji nazwa kolumny. Do zapamiętania: SUM dodaje, COUNT liczy wiersze, AVG liczy średnią, a MAX i MIN zwracają wartość skrajną. Gdyby trzeba było policzyć sumę dla każdego programisty osobno albo dla kilku miesięcy, dopisuje się GROUP BY nick. Funkcja SUM pomija wartości NULL, więc wiersz bez wpisanej liczby linii nie zepsuje wyniku. Wynik takiego zapytania to jedna liczba, na przykład 12 450.
Każde z błędnych zapytań psuje jeden z dwóch elementów: funkcję albo miejsce nazw. SELECT SUM(ocena) FROM ilosc_kodu; sumuje niewłaściwą kolumnę i do tego podaje po FROM nazwę kolumny zamiast tabeli - serwer zgłosi, że tabela ilosc_kodu nie istnieje. SELECT COUNT(programisci) FROM ilosc_kodu; ma nazwy zamienione miejscami, a nawet po ich poprawieniu COUNT policzyłby wiersze, czyli liczbę wpisów, a nie liczbę linii kodu. SELECT MAX(ilosc_kodu) FROM programisci; działa, ale zwraca tylko największą wartość, czyli wynik najbardziej pracowitego programisty. Sumę wszystkich linii daje wyłącznie SUM(ilosc_kodu) z tabeli programisci. Pomaga zasada czytania zapytania od końca: najpierw sprawdź, czy po FROM stoi tabela, a dopiero potem, jaka funkcja i jaka kolumna są w części SELECT. Funkcje agregujące zawsze przyjmują nazwę kolumny, nigdy nazwę tabeli.

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. Wysłane zostaną 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.