W bazie danych hurtowni zdefiniowano tabelę sprzedaz o polach: id, kontrahent, grupa_cenowa, obrot. Aby policzyć, ile rekordów tabeli dotyczy drugiej grupy cenowej, należy zastosować polecenie
A.
SELECT COUNT(sprzedaz) FROM kontrahent WHERE grupa_cenowa = 2;
B.
SELECT COUNT(kontrahent) FROM sprzedaz WHERE grupa_cenowa > 2;
C.
SELECT COUNT(kontrahent) FROM sprzedaz WHERE grupa_cenowa = 2;
D.
SELECT SUM(kontrahent) FROM sprzedaz WHERE grupa_cenowa = 2;
Poprawne polecenie to SELECT COUNT(kontrahent) FROM sprzedaz WHERE grupa_cenowa = 2;. Klauzula FROM wskazuje tabelę, z której pobierane są dane, czyli sprzedaz. Warunek WHERE grupa_cenowa = 2 ogranicza wynik tylko do rekordów należących do drugiej grupy cenowej. Funkcja agregująca COUNT(kontrahent) zlicza niepuste wartości w kolumnie kontrahent wśród rekordów spełniających ten warunek, więc służy do ustalenia liczby takich wpisów. Do zapamiętania: schemat zapytania zliczającego rekordy to SELECT COUNT(kolumna) FROM tabela WHERE warunek;. W praktyce często używa się też COUNT(*), gdy trzeba policzyć wszystkie wiersze, niezależnie od wartości NULL w konkretnych kolumnach.
W tym zadaniu trzeba zliczyć rekordy, a nie obliczyć sumę ani wybrać inną grupę cenową. Polecenie SELECT SUM(kontrahent) FROM sprzedaz WHERE grupa_cenowa = 2; używa funkcji SUM, która służy do sumowania wartości liczbowych, na przykład obrotu, a nie do liczenia liczby rekordów. Polecenie SELECT COUNT(kontrahent) FROM sprzedaz WHERE grupa_cenowa > 2; używa właściwej funkcji COUNT, ale warunek grupa_cenowa > 2 oznacza grupy większe niż 2, a nie dokładnie drugą grupę cenową. Byłoby trafne przy pytaniu o grupy od trzeciej wzwyż. Polecenie SELECT COUNT(sprzedaz) FROM kontrahent WHERE grupa_cenowa = 2; myli nazwę tabeli z nazwą kolumny - dane znajdują się w tabeli sprzedaz. Poprawna treść to SELECT COUNT(kontrahent) FROM sprzedaz WHERE grupa_cenowa = 2;. Typowy błąd polega na skupieniu się wyłącznie na słowie COUNT i pominięciu warunku oraz źródła danych.