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.

¿Fue útil?

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)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top