Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

143
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda