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?
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?
Wyjaśnienie i uzasadnienie dydaktyczne
Poprawna odpowiedź: D (SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa;)
SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa;.
Aby uzyskać liczbę osób (uczniów) w poszczególnych klasach, potrzebujemy:
- Zliczyć rekordy: Funkcja agregująca
COUNT(). Możemy zliczyć dowolną kolumnę, która nie jest NULL dla każdego ucznia (np.COUNT(id)) lub użyćCOUNT(*)do zliczenia wszystkich wierszy. - Wyświetlić nazwę klasy: Dołączenie kolumny
klasado klauzuliSELECT. - Grupować wyniki według klasy: Użycie klauzuli
GROUP BY klasa. To spowoduje, że funkcjaCOUNT()będzie działać oddzielnie dla każdej unikalnej wartości w kolumnieklasa.
Zapytanie SELECT COUNT(id), klasa FROM uczniowie GROUP BY klasa; realizuje wszystkie te punkty. Opcjonalnie można dodać ORDER BY klasa na końcu, aby posortować wyniki alfabetycznie według nazwy klasy, ale nie jest to wymagane do samego zliczenia.
Dlaczego pozostałe opcje są nieprawidłowe?
- A:
SELECT SUM(id), klasa FROM uczniowie ORDER BY klasa;— Używa funkcjiSUM(id), która sumowałaby wartości w kolumnieid, a nie liczyła uczniów. BrakGROUP BYprzy jednoczesnym wyborze kolumny nieagregowanej (klasa) i funkcji agregującej (SUM) jest zwykle błędem składniowym lub prowadzi do nieoczekiwanych wyników (w zależności od dialektu SQL). - B:
SELECT COUNT(id), klasa FROM uczniowie ORDER BY klasa;— Brakuje klauzuliGROUP BY klasa. Bez niej, jeśli zapytanie w ogóle zadziała,COUNT(id)zwróciłoby całkowitą liczbę uczniów w tabeli, powtórzoną dla każdej klasy (lub zwróciłoby błąd, ponieważklasanie jest częścią funkcji agregującej ani klauzuliGROUP BY). - C:
SELECT SUM(id), klasa FROM uczniowie GROUP BY klasa;— Używa poprawnej klauzuliGROUP BY klasa, ale funkcjaSUM(id)jest nieodpowiednia do zliczania liczby osób. Sumowałaby identyfikatory uczniów w każdej klasie.
Chcesz poćwiczyć całą kwalifikację INF.03?
Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.
Pojęcia z tego pytania
- Funkcje agregujące w SQL (COUNT, SUM, AVG, MIN, MAX)Wbudowane funkcje SQL wykonujące obliczenia na zestawie wartości w kolumnie i zwracające pojedynczą wartość skalarną.
- Kwerenda / Zapytanie SQLSformułowane w języku SQL żądanie skierowane do systemu bazy danych w celu wyszukania, dodania, modyfikacji lub usunięcia informacji.
- Grupowanie GROUP BY i klauzula HAVINGMechanizm łączący wiersze o takich samych wartościach w grupy w celu wykonania na nich obliczeń agregujących, filtrowanych za pomocą HAVING.
Podobne pytania z działu „Sql zlaczenia i agregacja”
Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 43 pytań z tego działu.
- #63
Którego ze słów kluczowych języka SQL należy użyć, aby wyeliminować duplikaty?
- #106
Aby policzyć wszystkie wiersze tabeli Koty należy użyć polecenia:
- #158
W bazie danych, w celu uporządkowania listy uczniów według roku urodzenia, należy użyć polecenia
- #232
Zdefiniowano bazę danych z tabelą mieszkancy o polach: nazwisko, imie, miasto. Następnie stworzono następujące zapytanie do bazy: SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Poznań" UNION ALL SELECT nazwisko, imie FROM mieszkancy WHERE miasto="Kraków"; Wskaż zapytanie, które zwróci identyczne dane:
- #308
Dana jest tabela programiści 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