MySQL Ver: ¿Cómo puedo configurar valor predeterminado de un campo calculado a 0?
-
19-09-2019 - |
Pregunta
Yo uso la siguiente instrucción para crear un cálculo del porcentaje en una vista:
ronda (((Surveys
.RejectedAsAdvertising
/ Surveys
.Responses
) * 100), 0) AS PercentageAdvertising
Básicamente, divido el número de respuestas a una pregunta determinada (en este caso, es algo considerado como la publicidad) por el número total de respuestas.
Al final, tengo columnas que muestran los porcentajes para cada uno de los cinco posibles respuestas de la encuesta ( "¿Es la publicidad?", "¿Es aburrido?", Etc.).
Esto funciona perfectamente, pero hay una cosa que me gustaría modificar. Cuando un tipo de respuesta (por ejemplo, la publicidad) no tiene ningún voto, mi campo calculado recibe un valor NULL.
Al definir mi punto de vista, ¿cómo puedo especificar un valor por defecto de 0?
Gracias.
Solución
Es necesario un coalesce
allí. Se selecciona el primer argumento que no es nulo, por lo que necesita algo como:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
A continuación, cuando el resultado de la ronda es NULL, se dan a concentrarse en su lugar.
Otros consejos
COALESCE es el enfoque preferido , porque es una forma estándar ANSI de manejar evaluación cuando un parámetro es nulo. Siendo ANSI, la misma sintaxis se apoya en Oracle, SQL Server, PostgreSQL, etc, lo que hace más fácil la consulta a puerto entre las bases de datos si es necesario.
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL es el sintaxis específica de MySQL:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)