Pergunta

Eu uso a seguinte instrução para criar um cálculo de porcentagem em uma visão:

round (((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100), 0) AS PercentageAdvertising

Basicamente, eu dividir o número de respostas para uma determinada questão (neste caso, é algo considerado publicidade) pelo número total de respostas.

No final, eu tenho colunas que mostram percentagens para cada uma das cinco respostas da pesquisa possíveis ( "Será que a publicidade?", "É chato?", Etc.).

Isso funciona perfeitamente, mas há uma coisa que eu gostaria de ajustar. Quando um tipo de resposta (por exemplo, publicidade) não tem nenhum votos, meu campo calculado recebe um valor NULL.

Ao definir meu ponto de vista, como posso especificar um valor padrão de 0?

Graças.

Foi útil?

Solução

Você precisa de um coalesce lá. Seleciona o primeiro argumento não-NULL, então você precisa de algo como:

coalesce(
    round(
        ((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
        ,0)
    ,0)
    AS PercentageAdvertising

Então, quando o resultado da rodada é NULL, ele vai te dar zero em vez.

Outras dicas

COALESCE é a abordagem preferida , porque é uma maneira padrão ANSI de lidar com a avaliação quando um parâmetro é nulo. Sendo ANSI, a mesma sintaxe é suportado em Oracle, SQL Server, Postgres, etc., tornando a consulta mais fácil para a porta entre bancos de dados, se necessário.

COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)

IFNULL é o sintaxe específica MySQL:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top