SQL - AVG() agrupado

   
Vista:

AVG() agrupado

Publicado por akhasis (8 intervenciones) el 13/05/2010 11:37:32
Hola!!!

Hace unos días hice una consulta en este foro, pero no me pudisteis contestar porque no había dado suficientes datos sobre mi caso concreto. Así que vuelvo a escribir para proporcionar todos los datos que creo que pueden ser necesarios.

He puesto la consulta que no consigo que me resulte correctamente, así como la consulta que crea las tablas necesarias para llevarla a cabo, en la url que acompaña a mi nick en este mensaje: http://pastebin.com/kxqwC3v2

La consulta devuelve una columna con los datos usados en la fórmula (la columna se llama datos_usados). Esta consulta contiene datos de tipo (id_centros, resultado, objetivo_mejora, pesos):

# 19, 5.5, 5, 100
# 19, 9.25, 5, 100
# 19, 7.81, 5, 100
# 20, 5.5, 5, 100
# 20, 9.25, 5, 100
# 21, 9.25, 5, 100
# 21, 7.81, 5, 100
# 21, 5.5, 5, 100
...

Pues bien, lo que quiero que me devuelva la consulta es, en una columna, la media de los resultados de cada id_centro. Es decir, para el centro 19, el resultado sería
5.5/ 5*100 +
9.25/5*100 +
7.81/5*100

de la misma manera se calcularía el resultado de cada centro, y, a continuación, realizar la media de todos los resultados.

Dicho de otra manera, el problema lo tengo a la hora de sumar los resultados de cada centro por separado y crear la media del resultado de estas sumas.

Es necesario realizarlo en una sola consulta (aunque tenga subconsultas) porque en algunos casos, después es necesario ordenarlo por el resultado de ese campo.

Espero que, a pesar de lo enrevesado de la consulta y lo complicado del caso, haya sido capaz de exponer el tema lo más claro posible.

Gracias por soportar esta parrafada, y por vuestra atención.

Un saludo,
akhasis
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:AVG() agrupado

Publicado por Leonardo Josue (878 intervenciones) el 13/05/2010 17:46:12
Buenos días akhasis:

Lamentablemente en estos momentos no tengo instalado MySQL en mi equipo, por lo que no me es posible recuperar la información que proporcionaste, sin embargo espero poder ayudarte en algo.

Según entendí, lo que esperas de salida entonces sería algo como esto:

id_centro|Media
#19|451.2
#20|295.0
#21|451.2

Creo que lo podrías hacer así:

select id_centro, sum(media) from
(
select a.*, a.resultado / a.objetivo_mejora * a.pesos as average from datos_usados
) b
group by id_centro

Si esto no es lo que esperas, te pediría nuevamente que pongas un ejemplo de cómo sería tu tabla de salida, para poder tratar de ayudarte.

saludos
Leo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:AVG() agrupado

Publicado por akhasis (8 intervenciones) el 14/05/2010 14:47:33
Hola Leo,

hoy he pasado medio día intentando adaptar tu consejo a mi caso, y todavía estoy un poco liado. El lunes cuando vuelva espero conseguirlo y ya te diré.

Gracias por tu atención
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar