sql >> Base de Datos >  >> RDS >> PostgreSQL

agrupar por necesario en la instrucción SQL count (*)?

Este error tiene mucho sentido. COUNT es una función "agregada". Por lo tanto, debe indicarle por qué campo agregar, lo cual se hace con GROUP BY cláusula.

El que probablemente tenga más sentido en su caso sería:

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

Si solo usa el COUNT(*) cláusula, está solicitando devolver el número completo de filas, en lugar de agregar por otra condición. Su búsqueda si GROUP BY está implícito en ese caso, podría responderse con:"más o menos":si no especifica nada, es un poco como preguntar:"agrupar por nada", lo que significa que obtendrá un gran agregado, que es toda la tabla.

Como ejemplo, ejecutando:

SELECT COUNT(*) FROM table;

le mostrará el número de filas en esa tabla, mientras que:

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

le mostrará el número de filas por valor de col_a . Algo como:

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

También debes tener en cuenta que el * significa contar todo . Incluyendo NULL ¡s! Si desea contar una condición específica, debe usar COUNT(expression) ! Consulte los documentos sobre funciones agregadas para más detalles sobre este tema.