PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Gruppieren nach erforderlich in count(*) SQL-Anweisung?

Dieser Fehler macht absolut Sinn. COUNT ist eine "Aggregat"-Funktion. Sie müssen ihm also mitteilen, nach welchem ​​Feld aggregiert werden soll, was mit GROUP BY erfolgt Klausel.

Diejenige, die in Ihrem Fall wahrscheinlich am sinnvollsten ist, wäre:

SELECT column_a, COUNT(*) FROM my_schema.my_table GROUP BY column_a;

Wenn Sie nur Verwenden Sie den COUNT(*) -Klausel verlangen Sie, die vollständige Anzahl von Zeilen zurückzugeben, anstatt nach einer anderen Bedingung zu aggregieren. Ihre Suche ist GROUP BY ist in diesem Fall implizit, könnte mit "irgendwie" beantwortet werden:Wenn Sie nichts angeben, ist das ein bisschen wie die Frage:"Gruppieren nach nichts", was bedeutet, dass Sie ein riesiges Aggregat erhalten, das die gesamte Tabelle ist.

Als Beispiel wird ausgeführt:

SELECT COUNT(*) FROM table;

zeigt Ihnen die Anzahl der Zeilen in dieser Tabelle, während:

SELECT col_a, COUNT(*) FROM table GROUP BY col_a;

zeigt Ihnen die Anzahl der Zeilen pro Wert von col_a . Etwas wie:

    col_a  | COUNT(*)
  ---------+----------------
    value1 | 100
    value2 | 10
    value3 | 123

Sie sollten auch berücksichtigen, dass der * bedeutet, alles zu zählen . Einschließlich NULL s! Wenn Sie eine bestimmte Bedingung zählen möchten, sollten Sie COUNT(expression) verwenden ! Siehe die Dokumentation zu aggregierten Funktionen für weitere Details zu diesem Thema.