Reemplace el campo nulo con 0, usando el nombre de la condición en la consulta

Esta es mi consulta MySQL:

SELECT ROUND( AVG(p.votes), 2) AS 'votes', games.*
FROM games
LEFT JOIN polls p ON (p.gid = games.id)
GROUP BY games.id;

Está funcionando bien, pero si no hay votos en el juego en el polls mesa - la votes el campo es NULL y luego en el resultado: ¿cómo puedo reemplazarlo para que se muestre? 0 en cambio (como hay 0 filas que se encuentran en el polls).

También:

¿Es posible nombrar mi condición y luego usarla fe. para los cálculos en MySQL?

Esto es lo que quiero decir:

SELECT ROUND( AVG(votes), 2) AS 'votes', (votes / 50 * 100) FROM `polls`;

Lanzará un mensaje de error diciendo que votes hay una columna desconocida allí.

Entonces, ¿es posible usar la condición (como 'votos') nombre para fines de cálculo en mi consulta?

preguntado el 12 de junio de 12 a las 10:06

2 Respuestas

Primero:

COALESCE(ROUND( AVG(p.votes), 2), 0)

Segundo: no, no es posible exactamente en la misma declaración. Es posible si la parte con alias está en una subconsulta. Entonces tienes que reescribir

(COALESCE(ROUND( AVG(p.votes), 2), 0) / 50 * 100)

COALESCE e IFNULL logran el mismo objetivo (tal vez no exactamente de la misma manera), pero COALESCE es ANSI SQL.

Respondido el 12 de junio de 12 a las 10:06

No puede crear un alias para el campo y usar el mismo alias en la misma declaración de selección.

Utilice la siguiente consulta:

SELECT Ifnull(Round(Avg(votes), 2), 0) AS 'votes', 
       ( Ifnull(Round(Avg(votes), 2), 0) / 50 * 100 ) 
FROM   `polls`; 

Respondido el 12 de junio de 12 a las 10:06

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.