sql >> Database >  >> RDS >> PostgreSQL

groeperen op nodig in count(*) SQL-instructie?

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.



  1. niet-ondersteund Scannen, stuurprogramma opslaan. Waarde type []uint8 in type *time.Time

  2. Hoe krijg ik een opgeslagen procedure-uitvoerparameter die een array is om te werken?

  3. Json MySql krijgt twee gehele getallen en een string

  4. Python verliest verbinding met MySQL-database na ongeveer een dag