Saltar al contenido

Error: column must appear in the GROUP BY clause or be used in an aggregate function

Alejandro

Nivel 3 ·

Postgres me tira ese error con esta consulta: SELECT vendedor, sucursal, SUM(total) FROM ventas GROUP BY vendedor; En MySQL la misma consulta me andaba. ¿Qué cambia?
229 vistas 5 respuestas 5 0

Respuestas 5

  1. Valentín C.

    Nivel 2 ·

    1 0

    Cuando agrupás, cada columna del SELECT tiene que estar en el GROUP BY o dentro de una función de agregación. Si un vendedor vendió en dos sucursales, ¿cuál debería mostrar? Postgres no adivina.

  2. Androide99

    Nivel 1 ·

    1 0

    Agregá sucursal al GROUP BY. Pero ojo: si un vendedor vendió en dos sucursales, vas a tener dos filas para ese vendedor, una por sucursal. Si querés una sola fila por vendedor, sacá sucursal del SELECT.

  3. Benja75

    Nivel 3 ·

    1 0

    Postgres solo te deja omitirla cuando agrupás por la clave primaria de la tabla de donde sale la columna (dependencia funcional). Acá no aplica.

  4. Patricia P.

    Nivel 3 ·

    0 0

    MySQL viejo lo permitía y devolvía un valor cualquiera del grupo. Desde la 5.7 viene activado ONLY_FULL_GROUP_BY por defecto y también da error. Si te andaba, tu servidor tiene ese modo desactivado.

  5. Alejandro

    Nivel 3 ·

    0 0

    Efectivamente, el servidor viejo tenía el modo desactivado. Y sí, había vendedores en dos sucursales, así que me estaba mostrando datos medio inventados. Gracias.