SQLPytanie 04 z 14
COUNT(*) vs COUNT(1) vs COUNT(kolumna)
Najpierw odpowiedz na głos lub w myślach, potem porównaj.
Odpowiedź
COUNT(*) liczy wiersze. COUNT(1) również liczy każdy wiersz, bo stała 1 nie jest NULL. COUNT(kolumna) pomija NULL w tej kolumnie.
SQL
WITH sample(value) AS (VALUES (10), (NULL), (10))
SELECT COUNT(*) AS rows,
COUNT(1) AS ones,
COUNT(value) AS non_null,
COUNT(DISTINCT value) AS unique_values
FROM sample;
-- 3, 3, 2, 1Pułapka: COUNT(1) nie jest magicznym sposobem przyspieszenia zapytania. W LEFT JOIN do liczenia dopasowanych rekordów używam np. COUNT(right_table.id), jeżeli ten identyfikator jest NOT NULL.
Jak poszło? Bądź szczery — „Jeszcze nie” dodaje pytanie do powtórki.