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

348
Vistas
Calcule la suma de una consulta que usa order by y limit Postgres

La siguiente consulta devuelve una tabla de calificaciones. Quiero la suma de la misma y no puedo averiguar cómo hacerlo.

 SELECT grade FROM "GradesTable" WHERE status='success' AND student_ID=1 ORDER BY grade DESC LIMIT 50

me sale este error:

ERROR: la columna "calificación" debe aparecer en la cláusula GROUP BY o usarse en una función agregada

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

SELECT SUM(grades) FROM ( SELECT grade as grades FROM "GradesTable" WHERE status='success' AND student_ID=1 ORDER BY grade DESC LIMIT 50 ) z
over 4 years ago · Santiago Trujillo Denunciar

0

El problema aquí es la cláusula ORDER BY que sabría si pegara el error completo, en lugar de obligarnos a recrear su problema desde cero porque no proporcionó el DDL y los datos.

 CREATE TABLE "GradesTable" ( status text, student_id int, grade int ); INSERT INTO "GradesTable" (status, student_id, grade) VALUES ('success', 1, 80), ('success', 1, 100);

Consulta

 SELECT sum(grade) FROM "GradesTable" WHERE status='success' AND student_ID=1 ORDER BY grade DESC LIMIT 50 ; ERROR: column "GradesTable.grade" must appear in the GROUP BY clause or be used in an aggregate function LINE 4: ORDER BY grade DESC

Sin embargo, esto funciona,

 SELECT sum(grade) FROM "GradesTable" WHERE status='success' AND student_ID=1 LIMIT 50 ; sum ----- 180 (1 row)

Pero no debería tener un LIMIT si solo tiene un agregado que solo puede devolver una fila.

 SELECT sum(grade) FROM "GradesTable" WHERE status='success' AND student_ID=1 ;

Si tenía la intención de ordenar por sum(grade) , puede hacerlo, pero pierde la capacidad de ordenar por grade en el momento en que lo agrega. Sin embargo, en este ejemplo no importa porque solo está devolviendo una fila.

Y como nota aparte, nunca debe citar identificadores en PostgreSQL. Escribe todo en minúsculas, nunca cite nombres de tablas o nombres de columnas.

over 4 years ago · Santiago Trujillo 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