PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

raggruppare per necessario nell'istruzione SQL count(*)?

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.