Como puedo hacer una consulta calculada

20/03/2007 - 12:00 por Pau Vidal | Informe spam
Buenos días a todos.

Tengo un problema de consulta de MySQL, he estado buscando en casi todos los
temas algo parecido, pero no consigo ver a nadie que haya tenido el mismo
problema.

Tengo una tabla de votaciones y tengo que hacer una selección ordenada por
los más votados.

La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION

Lo que he conseguido es que con esta consulta, me sume el total de puntos y
me de la cantidad de votos que tiene cada usuario.

SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios LEFT
JOIN valoraciones ON valoraciones.fk_usuario_valoracion =
usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER BY
total_votos DESC

En este caso, el me da el total de votos, pero necesito dividirlo por la
cantidad de votos para sacar el promedio.

SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion) AS
total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion ORDER
BY
total_puntos;

En esta segunda, consigo el total + la cantidad, pero aqui es donde viene el
problema cuando quiero que en la misma consulta aparezca la media
directamente, algo como esto:

(total_puntos / total) AS total_final

Alguien sabe como solucionar este tema en una o varias consultas?

Gracias anticipadas.

Preguntas similare

Leer las respuestas

#1 Jose Mariano Alvarez
20/03/2007 - 12:27 | Informe spam
Este foro es de SQL Server y no de MySql.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el problema
también ayuda.



"Pau Vidal" <Pau wrote in message
news:
Buenos días a todos.

Tengo un problema de consulta de MySQL, he estado buscando en casi todos
los
temas algo parecido, pero no consigo ver a nadie que haya tenido el mismo
problema.

Tengo una tabla de votaciones y tengo que hacer una selección ordenada por
los más votados.

La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION

Lo que he conseguido es que con esta consulta, me sume el total de puntos
y
me de la cantidad de votos que tiene cada usuario.

SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios LEFT
JOIN valoraciones ON valoraciones.fk_usuario_valoracion > usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER BY
total_votos DESC

En este caso, el me da el total de votos, pero necesito dividirlo por la
cantidad de votos para sacar el promedio.

SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion) AS
total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion
ORDER
BY
total_puntos;

En esta segunda, consigo el total + la cantidad, pero aqui es donde viene
el
problema cuando quiero que en la misma consulta aparezca la media
directamente, algo como esto:

(total_puntos / total) AS total_final

Alguien sabe como solucionar este tema en una o varias consultas?

Gracias anticipadas.
Respuesta Responder a este mensaje
#2 Pau Vidal
20/03/2007 - 12:45 | Informe spam
Jose Mariano, Gracias por la pronta respuesta, pero las consultas en ambos
sistemas se realizan de forma similar no?

De todas formas el problema lo tengo el SQL y me he equivocado tecleando.
Es posible que haya una respuesta.

Gracias.

"Jose Mariano Alvarez" wrote:

Este foro es de SQL Server y no de MySql.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el problema
también ayuda.



"Pau Vidal" <Pau wrote in message
news:
> Buenos días a todos.
>
> Tengo un problema de consulta de MySQL, he estado buscando en casi todos
> los
> temas algo parecido, pero no consigo ver a nadie que haya tenido el mismo
> problema.
>
> Tengo una tabla de votaciones y tengo que hacer una selección ordenada por
> los más votados.
>
> La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION
>
> Lo que he conseguido es que con esta consulta, me sume el total de puntos
> y
> me de la cantidad de votos que tiene cada usuario.
>
> SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios LEFT
> JOIN valoraciones ON valoraciones.fk_usuario_valoracion > > usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER BY
> total_votos DESC
>
> En este caso, el me da el total de votos, pero necesito dividirlo por la
> cantidad de votos para sacar el promedio.
>
> SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion) AS
> total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion
> ORDER
> BY
> total_puntos;
>
> En esta segunda, consigo el total + la cantidad, pero aqui es donde viene
> el
> problema cuando quiero que en la misma consulta aparezca la media
> directamente, algo como esto:
>
> (total_puntos / total) AS total_final
>
> Alguien sabe como solucionar este tema en una o varias consultas?
>
> Gracias anticipadas.



Respuesta Responder a este mensaje
#3 Alejandro Mesa
20/03/2007 - 14:30 | Informe spam
Pau Vidal,

Pues incluye la formula como una columna mas de la lista.

SELECT
valoraciones.fk_usuario_valoracion,
SUM(puntuacion) AS total_puntos,
COUNT(fk_usuario_valoracion) AS total,
AVG(puntuacion) as avg_puntuacion,
SUM(puntuacion) / (COUNT(fk_usuario_valoracion) * 1.00) as avg_2
FROM
valoraciones
GROUP BY
valoraciones.fk_usuario_valoracion
ORDER BY
total_puntos;


AMB

"Pau Vidal" wrote:

Buenos días a todos.

Tengo un problema de consulta de MySQL, he estado buscando en casi todos los
temas algo parecido, pero no consigo ver a nadie que haya tenido el mismo
problema.

Tengo una tabla de votaciones y tengo que hacer una selección ordenada por
los más votados.

La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION

Lo que he conseguido es que con esta consulta, me sume el total de puntos y
me de la cantidad de votos que tiene cada usuario.

SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios LEFT
JOIN valoraciones ON valoraciones.fk_usuario_valoracion =
usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER BY
total_votos DESC

En este caso, el me da el total de votos, pero necesito dividirlo por la
cantidad de votos para sacar el promedio.

SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion) AS
total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion ORDER
BY
total_puntos;

En esta segunda, consigo el total + la cantidad, pero aqui es donde viene el
problema cuando quiero que en la misma consulta aparezca la media
directamente, algo como esto:

(total_puntos / total) AS total_final

Alguien sabe como solucionar este tema en una o varias consultas?

Gracias anticipadas.
Respuesta Responder a este mensaje
#4 Maxi
20/03/2007 - 17:16 | Informe spam
Hola, por mas que se realicen de forma similar (lo desconozco porque yo uso
bases de datos y no mysql) este no es un foro adecuado para ello, deberias
hacer la consulta en los foros de mysql que me imagino que debe tener


Salu2

Microsoft MVP SQL Server
Culminis Speaker

"Pau Vidal" escribió en el mensaje
news:
Jose Mariano, Gracias por la pronta respuesta, pero las consultas en ambos
sistemas se realizan de forma similar no?

De todas formas el problema lo tengo el SQL y me he equivocado tecleando.
Es posible que haya una respuesta.

Gracias.

"Jose Mariano Alvarez" wrote:

Este foro es de SQL Server y no de MySql.



Saludos
Ing. Jose Mariano Alvarez


(Cambia los ceros por O y saca lo que sobra)


IMPORTANTE

Por favor traten de indicar la versión de SQL y Service Pack.
La inclusión de (CREATE, INSERTS, etc.) para poder reproducir el problema
también ayuda.



"Pau Vidal" <Pau wrote in message
news:
> Buenos días a todos.
>
> Tengo un problema de consulta de MySQL, he estado buscando en casi
> todos
> los
> temas algo parecido, pero no consigo ver a nadie que haya tenido el
> mismo
> problema.
>
> Tengo una tabla de votaciones y tengo que hacer una selección ordenada
> por
> los más votados.
>
> La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION
>
> Lo que he conseguido es que con esta consulta, me sume el total de
> puntos
> y
> me de la cantidad de votos que tiene cada usuario.
>
> SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios
> LEFT
> JOIN valoraciones ON valoraciones.fk_usuario_valoracion >> > usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER
> BY
> total_votos DESC
>
> En este caso, el me da el total de votos, pero necesito dividirlo por
> la
> cantidad de votos para sacar el promedio.
>
> SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion)
> AS
> total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion
> ORDER
> BY
> total_puntos;
>
> En esta segunda, consigo el total + la cantidad, pero aqui es donde
> viene
> el
> problema cuando quiero que en la misma consulta aparezca la media
> directamente, algo como esto:
>
> (total_puntos / total) AS total_final
>
> Alguien sabe como solucionar este tema en una o varias consultas?
>
> Gracias anticipadas.



Respuesta Responder a este mensaje
#5 Pau Vidal
20/03/2007 - 17:20 | Informe spam
Muchas gracias Alejandro
Justo lo que necesitaba, lo obvio en ocasiones no lo vemos.

Un saludo.
Pau

"Alejandro Mesa" wrote:

Pau Vidal,

Pues incluye la formula como una columna mas de la lista.

SELECT
valoraciones.fk_usuario_valoracion,
SUM(puntuacion) AS total_puntos,
COUNT(fk_usuario_valoracion) AS total,
AVG(puntuacion) as avg_puntuacion,
SUM(puntuacion) / (COUNT(fk_usuario_valoracion) * 1.00) as avg_2
FROM
valoraciones
GROUP BY
valoraciones.fk_usuario_valoracion
ORDER BY
total_puntos;


AMB

"Pau Vidal" wrote:

> Buenos días a todos.
>
> Tengo un problema de consulta de MySQL, he estado buscando en casi todos los
> temas algo parecido, pero no consigo ver a nadie que haya tenido el mismo
> problema.
>
> Tengo una tabla de votaciones y tengo que hacer una selección ordenada por
> los más votados.
>
> La tabla tiene dos campos importantes, FK_USUARIO y PUNTUACION
>
> Lo que he conseguido es que con esta consulta, me sume el total de puntos y
> me de la cantidad de votos que tiene cada usuario.
>
> SELECT *, sum(valoraciones.puntuacion) as total_votos FROM usuarios LEFT
> JOIN valoraciones ON valoraciones.fk_usuario_valoracion =
> usuarios.id_usuarios GROUP BY valoraciones.fk_usuario_valoracion ORDER BY
> total_votos DESC
>
> En este caso, el me da el total de votos, pero necesito dividirlo por la
> cantidad de votos para sacar el promedio.
>
> SELECT *, SUM(puntuacion) AS total_puntos, COUNT(fk_usuario_valoracion) AS
> total FROM `valoraciones` GROUP BY valoraciones.fk_usuario_valoracion ORDER
> BY
> total_puntos;
>
> En esta segunda, consigo el total + la cantidad, pero aqui es donde viene el
> problema cuando quiero que en la misma consulta aparezca la media
> directamente, algo como esto:
>
> (total_puntos / total) AS total_final
>
> Alguien sabe como solucionar este tema en una o varias consultas?
>
> Gracias anticipadas.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida