Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Oracle »

Error group by en una sentencia select

Estas en el tema de Error group by en una sentencia select en el foro de Oracle en Foros del Web. Hola a tod@s! Estoy realizando una sentencia que me esta volviendo un poco loco. Os la pongo para que la veais: SELECT aplicacion, clase_metodo, sum(ocurrencias) ...
  #1 (permalink)  
Antiguo 27/04/2012, 04:56
 
Fecha de Ingreso: marzo-2012
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Error group by en una sentencia select

Hola a tod@s!
Estoy realizando una sentencia que me esta volviendo un poco loco. Os la pongo para que la veais:

SELECT aplicacion,
clase_metodo,
sum(ocurrencias) as ocurrencias,
round(avg(segundos_empleados/ocurrencias),2) as media_tiempo,
min(TIEMPO_MINIMO_EMPLEADO) as tiempo_minimo, max(TIEMPO_MAXIMO_EMPLEADO) as tiempo_maximo,
round(TIEMPO_EMPLEADO_08_10 * sum(ocurrencias)/segundos_empleados,2) as t08_10,
round(TIEMPO_EMPLEADO_10_12 * sum(ocurrencias)/segundos_empleados,2) as t10_12,
round(TIEMPO_EMPLEADO_12_14 * sum(ocurrencias)/segundos_empleados,2) as t12_14,
round(TIEMPO_EMPLEADO_14_16 * sum(ocurrencias)/segundos_empleados,2) as t14_16,
round(TIEMPO_EMPLEADO_16_08 * sum(ocurrencias)/segundos_empleados,2) as t16_08
FROM prb_lectura_log_res
WHERE OCURRENCIAS > 1 AND entorno='pro-ast'
GROUP BY aplicacion, clase_metodo
ORDER BY MEDIA_TIEMPO DESC

Antes la sentencia funcionaba "correctamente" con un AVG(TIEMPO_EMPLEADO_10_12) y respectivos en donde ahora he puesto round(TIEMPO_EMPLEADO_10_12 * sum(ocurrencias)/segundos_empleados,2)
La cuestion es que necesito hacer la operacion que indico para poder sacar los datos correctos, y por mucho que pruebo no hace mas que mostrarme el error:

ORA-00979: no es una expresión GROUP BY
00979. 00000 - "not a GROUP BY expression"

Espero podais ayudarme!!Gracias
  #2 (permalink)  
Antiguo 02/05/2012, 04:49
 
Fecha de Ingreso: marzo-2012
Mensajes: 11
Antigüedad: 12 años, 1 mes
Puntos: 2
Respuesta: Error group by en una sentencia select

Me parece que es porque round no es una función de agregado como 'avg' y usando la clausula group by todos los campos de la select deben ir enunciados en la group by o ir dentro de una función de agregado como avg o sum o count, de este tipo.

Tal vez deberías poner los alias de esos campos dentro de la clausula group by, de esta forma

GROUP BY aplicación, clase_metodo,t08_10,t10_12,t_12_14,t14_16,t_16_08

Espero no llegar demasiado tarde y que sea esto

Un abrazo
  #3 (permalink)  
Antiguo 04/05/2012, 06:32
 
Fecha de Ingreso: marzo-2012
Mensajes: 6
Antigüedad: 12 años
Puntos: 0
Respuesta: Error group by en una sentencia select

Gracias por la respuesta. Al parecer el problema venia por poner un sum a un solo campo y operarlo con los demas. Haciendo un sum de cada campo en la operacion matematica no da el error. No se me ocurre como explicarlo..de todas formas la formula no era la correcta asi que he tirado por otro camino!!gracias de todas formas!!
Un saludo.

Etiquetas: group, select, sentencia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:26.