W tabeli mieszkancy zapisane są osoby z całego kraju. Aby ustalić, ile osób mieszka w Krakowie, należy zapisać kwerendę
A.
SELECT COUNT(miasto) FROM mieszkancy;
B.
SELECT COUNT(DISTINCT miasto) FROM mieszkancy WHERE miasto = 'Kraków';
C.
SELECT miasto FROM mieszkancy WHERE miasto = 'Kraków';
D.
SELECT COUNT(*) FROM mieszkancy WHERE miasto = 'Kraków';
Poprawna jest kwerenda SELECT COUNT(*) FROM mieszkancy WHERE miasto = 'Kraków';. Funkcja COUNT(*) zlicza liczbę wierszy spełniających warunek, a klauzula WHERE ogranicza analizę tylko do rekordów, w których w kolumnie miasto zapisano wartość 'Kraków'. W tym przypadku każdy wiersz tabeli mieszkancy reprezentuje osobę, więc liczba pasujących wierszy odpowiada liczbie osób mieszkających w Krakowie. Do zapamiętania: schemat takiej kwerendy to SELECT COUNT(*) FROM tabela WHERE kolumna = 'wartość';. W praktyce COUNT(*) stosuje się przy raportach, statystykach i zestawieniach, gdy potrzebna jest liczba rekordów, a nie ich pełna lista. Typowa pułapka to samo odfiltrowanie rekordów bez użycia funkcji agregującej.
W tym zadaniu trzeba policzyć osoby, czyli liczbę wierszy spełniających określony warunek. Zapytanie SELECT COUNT(miasto) FROM mieszkancy; zlicza niepuste wartości w kolumnie miasto w całej tabeli, bez ograniczenia do Krakowa. Byłoby przydatne do sprawdzenia, ile rekordów ma uzupełnione pole miasta, ale nie odpowiada na pytanie o konkretne miasto. Zapytanie SELECT miasto FROM mieszkancy WHERE miasto = 'Kraków'; zwraca listę wartości z kolumny miasto dla mieszkańców Krakowa, jednak nie podaje ich liczby. Nadaje się do wyświetlenia pasujących rekordów, nie do zliczania. Zapytanie SELECT COUNT(DISTINCT miasto) FROM mieszkancy WHERE miasto = 'Kraków'; liczy różne nazwy miast po filtrze, więc zwróci najwyżej 1, a nie liczbę osób. Poprawna jest kwerenda SELECT COUNT(*) FROM mieszkancy WHERE miasto = 'Kraków';. Typowy błąd polega na pomyleniu zliczania rekordów ze zliczaniem wartości lub unikatowych nazw.