Frage

Ich verwende die folgende Anweisung eine prozentuale Berechnung in einer Ansicht zu erstellen:

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

Grundsätzlich teile ich die Anzahl der Antworten auf eine bestimmte Frage (in diesem Fall wird etwas als Werbung sein) durch die Gesamtzahl der Antworten.

Am Ende ich Spalten haben, die Prozentsätze für jede der fünf möglichen Antworten auf die Umfrage zeigen ( „Ist es Werbung?“, „Ist es langweilig?“, Usw.).

Das funktioniert perfekt, aber es ist eine Sache, Ich mag würde zwicken. Wenn ein Antworttyp (beispielsweise Werbung) keine Stimmen, mein berechnetes Feld einen Nullwert empfängt.

Bei der Definition meiner Meinung nach, wie kann ich einen Standardwert von 0 angeben?

Danke.

War es hilfreich?

Lösung

Sie benötigen einen coalesce drin. Es wählt das erste Nicht-NULL-Argument, so müssen Sie so etwas wie:

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

Dann, wenn das Ergebnis der Runde NULL ist, wird es geben Sie Null statt.

Andere Tipps

COALESCE ist der bevorzugte Ansatz , denn es ist eine ANSI-Standard Art und Weise Auswertung der Handhabung, wenn ein Parameter null ist. Als ANSI wird die gleiche Syntax auf Oracle unterstützt, SQL Server, Postgres, usw., so dass die Abfrage einfacher Port zwischen Datenbanken, falls erforderlich.

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

IFNULL ist die MySQL spezifische Syntax:

IFNULL(round(((Surveys.RejectedAsAdvertising / Surveys.Responses) * 100),0) AS PercentageAdvertising, 0)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top