Ergebnis 1 bis 4 von 4

Thema: SQL (PostgreSQL): NULL-Wert bei sum () ersetzen

  1. #1

    SQL (PostgreSQL): NULL-Wert bei sum () ersetzen

    Kann mir mal jemand bei meinen Hausaufgaben helfen? ^^' Ich habe schon einige Zeit gesucht, aber es weder in den Vorlesungsunterlagen, noch im Internet gefunden:

    Wie kann man für eine [FONT="Courier New"]sum ()[/FONT]-Funktion einen "Standardwert" bestimmen, der dortsteht falls die Summe NULL ist? Sollte eigentlich ganz leicht sein, aber wie gesagt: nichts gefunden. Müsste übrigens auf Postgres laufen, falls das einen Unterschied macht.

    Hier noch die Query, falls die gebraucht wird (weswegen auch immer o_O):
    Code:
    SELECT Vorname, Zuname, GeburtsDatum,
              COUNT (DISTINCT (IDA)) AS Aufnahmen,
              COUNT (DISTINCT (Instrument)) AS Instrumente,
              SUM (Verdienst)
         FROM Person p NATURAL JOIN Musiker LEFT OUTER JOIN spielt ON (ID = IDM)
         GROUP BY ID, Vorname, Zuname, GeburtsDatum;
    Vielen Dank im Voraus, weiß hier doch sicher jemand!

  2. #2
    Ich weiß jetzt nicht ganz genau, was du als Standartwert verstehst, aber mittels der NVL+AVG Funktion kann man einen Standartwert mit dazurechnen... In dem Fall die "0".

    Code:
    SELECT Vorname, Zuname, GeburtsDatum,
              COUNT (DISTINCT (IDA)) AS Aufnahmen,
              COUNT (DISTINCT (Instrument)) AS Instrumente,
              AVG(NVL(Verdienst,0)) 
              --oder
              SUM(NVL(Verdienst,0))
    FROM Person p NATURAL JOIN Musiker LEFT OUTER JOIN spielt ON (ID = IDM)
    GROUP BY ID, Vorname, Zuname, GeburtsDatum;
    Hilft dir das


    Edit:
    Code:
    SELECT 
      ...
      CASE WHEN Verdienst = 0
        THEN "Wert" 
      ELSE 
        Verdienst 
      END 
      ...
      FROM ...
    ;
    Wäre dann eine einfache Überprüfung, was drin steht...

    Geändert von Gary (10.05.2006 um 16:12 Uhr)

  3. #3
    Zitat Zitat von Gary
    Hilft dir das
    Nein, aber danke für den Versuch! Genau die Funktion scheint's bei Postgres nicht zu geben! o_O Hab's jetzt aber doch durch lineares Durchstöbern der Postgres-Dokumentation geschafft, eine passende Funktion zu finden: [FONT="Courier New"]COALESCE (values [, ...])[/FONT] liefert den ersten Parameter zurück, der nicht NULL ist. Mein Code ist jetzt also:
    Code:
    SELECT Vorname, Zuname, GeburtsDatum,
              COUNT (DISTINCT (IDA)) AS Aufnahmen,
              COUNT (DISTINCT (Instrument)) AS Instrumente,
              COALESCE (SUM (Verdienst), 0) AS Gesamtverdienst
         FROM Person p NATURAL JOIN Musiker LEFT OUTER JOIN spielt ON (ID = IDM)
         GROUP BY ID, Vorname, Zuname, GeburtsDatum;
    Nur falls es jemand nochmal braucht!

  4. #4
    Na, das hätte ich dir als nächstes gesagt - wusste aber nicht genau, ob du mehr als 2 Argumente hast >_> ...aber gut

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •