Źródło: Arkusze CKE
Dana jest tabela uczniowie o polach id, nazwisko, imie, klasa. Które zapytanie SQL wyświetli liczbę osób w poszczególnych klasach oraz nazwę klasy?
Warianty odpowiedzi
-
A
A. SELECT SUM(id), klasa FROM uczniowie GROUP BY klasa;
-
B
B. SELECT SUM(id), klasa FROM uczniowie ORDER BY klasa;
-
C
C. SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa;
-
D
D. SELECT COUNT(id), klasa FROM uczniowie ORDER BY klasa;
Wyjaśnienie
Gdy musisz pogrupować dane i wykonać na nich zliczenie, zawsze łączysz funkcję COUNT z klauzulą GROUP BY.
Klauzula GROUP BY klasa dzieli wszystkie rekordy z tabeli na osobne grupy (po jednej dla każdej klasy). Następnie funkcja COUNT(id) zlicza, ile osób znajduje się w każdej z tak utworzonych grup.
Funkcja SUM się tu nie nadaje, bo służy do dodawania wartości liczbowych (np. sumowania zarobków), a ORDER BY odpowiada jedynie za sortowanie wyników na ekranie.