MySQL Vista: Como faço para definir o valor padrão de um campo calculado a 0?
-
19-09-2019 - |
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.
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)