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

gruppere efter nødvendig i count(*) SQL-sætning?

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.



  1. MySQL:GROUP_CONCAT med LEFT JOIN

  2. Rette:"Ukendt tabel 'locales' i informationsskema" i MariaDB

  3. SQL LIKE Operator for begyndere

  4. Er det muligt at få flere værdier fra en underforespørgsel?