Denne fejl giver perfekt mening. COUNT
er en "samlet" funktion. Så du skal fortælle det, hvilket felt den skal aggregere efter, hvilket gøres med GROUP BY
klausul.
Den, der nok giver mest mening i dit tilfælde, ville være:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Hvis du kun brug COUNT(*)
klausul, beder du om at returnere hele antallet af rækker i stedet for at aggregere efter en anden betingelse. Din questing if GROUP BY
er implicit i så fald, kunne besvares med:"en slags":Hvis du ikke specificerer noget, er det lidt ligesom at spørge:"grupper efter ingenting", hvilket betyder, at du får et kæmpe aggregat, som er hele tabellen.
Som et eksempel, udførelse af:
SELECT COUNT(*) FROM table;
vil vise dig antallet af rækker i den tabel, mens:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
vil vise dig antallet af rækker pr. værdien af col_a
. Noget som:
col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Du bør også tage højde for, at *
betyder at tælle alt . Inklusive NULL
s! Hvis du vil tælle en specifik tilstand, skal du bruge COUNT(expression)
! Se dokumenterne om aggregerede funktioner
for flere detaljer om dette emne.