Question

J'utilise la déclaration suivante pour créer un calcul de pourcentage dans une vue:

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

En fait, je divise le nombre de réponses à une certaine question (dans ce cas, est quelque chose considéré comme la publicité) par le nombre total de réponses.

En fin de compte, j'ai des colonnes qui affichent des pourcentages pour chacune des cinq réponses possibles de l'enquête ( « Est-ce la publicité? », « Est-ce ennuyeux? », Etc.).

Cela fonctionne parfaitement, mais il y a une chose que je voudrais modifier. Lorsqu'un type de réponse (par exemple, la publicité) n'a pas de votes, mon champ calculé reçoit une valeur NULL.

Lors de la définition de mon point de vue, comment puis-je spécifier une valeur par défaut de 0?

Merci.

Était-ce utile?

La solution

Vous avez besoin d'un coalesce là-dedans. Il sélectionne le premier argument non NULL, vous devez donc quelque chose comme:

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

Ensuite, lorsque le résultat du tour est NULL, il vous donnera à zéro à la place.

Autres conseils

COALESCE est l'approche privilégiée , car il est un moyen standard ANSI d'évaluation de manipulation lorsqu'un paramètre est nul. Être ANSI, la même syntaxe est prise en charge sur Oracle, SQL Server, Postgres, etc., ce qui rend la requête plus facile au port entre les bases de données en cas de besoin.

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

IFNULL est le MySQL syntaxe spécifique:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top