Deze fout is volkomen logisch. COUNT
is een "geaggregeerde" functie. U moet dus aangeven op welk veld moet worden geaggregeerd, wat wordt gedaan met de GROUP BY
clausule.
Degene die in uw geval waarschijnlijk het meest logisch is, is:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Als je alleen gebruik de COUNT(*)
clausule, vraagt u om het volledige aantal rijen te retourneren, in plaats van te aggregeren door een andere voorwaarde. Uw vraag als GROUP BY
is in dat geval impliciet, kan worden beantwoord met:"soort van":Als u niets opgeeft, lijkt het een beetje op vragen:"groeperen op niets", wat betekent dat u één enorm aggregaat krijgt, dat de hele tabel is.
Als voorbeeld, het uitvoeren van:
SELECT COUNT(*) FROM table;
toont u het aantal rijen in die tabel, terwijl:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
toont u het aantal rijen per waarde van col_a
. Iets als:
col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Houd er ook rekening mee dat de *
betekent om alles te tellen . Inclusief NULL
s! Als u een specifieke voorwaarde wilt tellen, moet u COUNT(expression)
. gebruiken ! Zie de documenten over samengevoegde functies
voor meer details over dit onderwerp.