Я использую следующий оператор для создания процентного расчета в представлении:
round (((Surveys
. RejectedAsAdvertising
/Surveys
. Responses
) * 100), 0) AS PercentageAdvertising
В принципе, я разделяю количество ответов на определенный вопрос (в данном случае, что-то считается рекламой) на общее количество ответов.
В конце концов, у меня есть столбцы, показывающие проценты для каждого из пяти возможных ответов опроса ( "Это реклама?", "Это скучно?" и т.д.).
Это прекрасно работает, но есть одна вещь, которую я хотел бы настроить. Когда тип ответа (например, реклама) не имеет голосов, мое вычисленное поле получает значение NULL.
При определении моего представления, как я могу указать значение по умолчанию 0?
Спасибо.
Вам нужен coalesce
. Он выбирает первый аргумент, отличный от NULL, поэтому вам нужно что-то вроде:
coalesce(
round(
((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100)
,0)
,0)
AS PercentageAdvertising
Затем, когда результат раунда равен NULL, он вместо этого даст вам нуль.
COALESCE является предпочтительным подходом, поскольку он является стандартным методом ANSI для обработки оценки, когда параметр равен нулю. Будучи ANSI, тот же синтаксис поддерживается в Oracle, SQL Server, Postgres и т.д., Что упрощает отправку запроса между базами данных.
COALESCE(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
IFNULL - это специфический синтаксис MySQL:
IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)