Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

142
Vistas
expresión no en columnas agregadas o GROUP BY

Tengo una tabla que contiene las siguientes columnas: ProductID, ProductName, Price, CategoryID.

El objetivo es imprimir todos los detalles (ProductID, ProductName, Price y Category) sobre el producto más caro.

Ejecuté la siguiente consulta:

 str = "SELECT ProductID, ProductName, MAX(Price) AS MaxPrice, CategoryID FROM Products;";

Sin embargo, aparece la excepción mencionada en el título, y no encuentro una razón para la aparición de la excepción. Busqué explicaciones en los siguientes enlaces:

  • Expresión no en columnas agregadas o GROUP BY Excepción

  • Agregar columnas no agrupadas por

También he leído y practicado en SQL Lección 10: Consultas con agregados (Pt. 1) De acuerdo con mi verificación en SQLBolt, la forma en que escribí la consulta es aceptable.

Después de leer y practicar, todavía no entiendo por qué necesito usar GROUP BY aquí. No es que tenga que presentar el precio máximo de cada grupo...

¡Muchas gracias de antemano!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Lo que necesita es solo una cláusula ORDER BY como:

 SELECT ProductID, ProductName, Price AS MaxPrice, CategoryID FROM Products ORDER BY Price DESC LIMIT 1

LIMIT 1 se asegurará de que obtenga solo la primera fila.

Obtuvo el error porque al agregar (es decir, sum, avg, max, min, count) una columna numérica necesita decirle a SQL cómo desea agrupar los datos mediante la cláusula GROUP BY . Por ejemplo, si desea encontrar el precio máximo para cada ProductName, deberá usar GROUP BY en ProductName :

 SELECT ProductName, MAX(Price) AS MaxPrice FROM Products GROUP BY ProductName

Agrupar por (SQL)

¿Por qué se necesita GROUP BY ?

Esto es más fácil de entender con sum() que con max() porque para SQL ambas son funciones de agregación. Entonces, digamos que si desea obtener la suma total del Price en lugar del precio máximo, entonces haría:

 SELECT SUM(Price) AS Total FROM Products --will give the total of all the prices

pero si agregó columnas no agregadas:

 SELECT ProductName, SUM(Price) AS Total FROM Products --will not work

Inmediatamente verá que esto no es posible porque habrá varios nombres de productos, ¿cuál debería mostrarse para la suma de precios?. Es por eso que arroja el error que pide usar una cláusula group by .

¡espero que esto ayude!

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda