Questo errore ha perfettamente senso. COUNT
è una funzione "aggregata". Quindi devi dirgli in base a quale campo aggregare, cosa che viene eseguita con GROUP BY
clausola.
Quello che probabilmente ha più senso nel tuo caso sarebbe:
SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;
Se solo usa il COUNT(*)
clausola, stai chiedendo di restituire il numero completo di righe, invece di aggregarle in base a un'altra condizione. La tua ricerca se GROUP BY
è implicito in quel caso, si potrebbe rispondere con:"sort of":se non specifichi nulla è un po' come chiedere:"raggruppa per niente", il che significa che otterrai un enorme aggregato, che è l'intera tabella.
Ad esempio, eseguendo:
SELECT COUNT(*) FROM table;
ti mostrerà il numero di righe in quella tabella, mentre:
SELECT col_a, COUNT(*) FROM table GROUP BY col_a;
ti mostrerà il numero di righe per valore di col_a
. Qualcosa come:
col_a | COUNT(*)
---------+----------------
value1 | 100
value2 | 10
value3 | 123
Dovresti anche considerare che il *
significa contare tutto . Compreso NULL
S! Se vuoi contare una condizione specifica, dovresti utilizzare COUNT(expression)
! Vedi i documenti sulle funzioni di aggregazione
per maggiori dettagli su questo argomento.