Announcement

Collapse
No announcement yet.

division von sum(distinct) ergibt immer "0"

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • division von sum(distinct) ergibt immer "0"

    Hallo zusammen,

    Ich habe ein Problem bei einer Datenbank abfrage und hoffe das mir einer helfen kann :-)

    Als Übung musste ich ein Wahlinformationssystem erstellen. Mit diesen beiden Tabellen:

    create table Wahlkreis
    (Wahldatum varchar(30),
    Nr int,
    Bezeichnung varchar(40),
    Anzahl_Wahlberechtigte int,
    gelegen_in varchar(40)
    primary key(Wahldatum,Nr));


    create table Erreicht
    (Wahldatum varchar(30),
    Nr int,
    PartName varchar(40),
    Anzahl_stimmen int
    primary key(wahldatum,Nr,PartName));


    In diesem Datenbanksystem soll ich dann die Wahlbeteiligung ausrechnen.
    Hierzu wollte ich einen Join durchführen um die Wahlbeteiligung der einzelnen Wahlkreise und die Wahlberechtigten in einer Tabelle anzeigen zu lassen. Diese beiden Werte wollte ich nun durcheinander teilen, um die Prozentangabe der Wahlbeteiligung zu erhalten.
    Doch seltsamerweise kommt wenn ich eine Division durchführe immer bei allen Tuppeln der Wert "0" als Ergebniss...
    Additionen und Subtraktionen sind kein problem, das habe ich ausprobiert, aber divisionen funktionieren einfach nicht. Ich habe schon überall im internet gesucht, habe aber keine Lösung für dieses Problem finden können. Wäre super wenn mir einer helfen könnte!


    select Bezeichnung, sum(distinct Anzahl_Stimmen) as Anzahl_Stimmen, sum(distinct Anzahl_Wahlberechtigte) as Anzahl_Wahlberechtigte
    from wahlkreis
    join erreicht
    on erreicht.Nr = wahlkreis.Nr
    group by Bezeichnung;


    select Bezeichnung, sum(distinct Anzahl_Stimmen)/ sum(distinct Anzahl_Wahlberechtigte)
    from wahlkreis
    join erreicht
    on erreicht.Nr = wahlkreis.Nr
    group by Bezeichnung;


    Herzlichen Dank in Vorraus!!!

  • #2
    Hallo,

    Doch seltsamerweise kommt wenn ich eine Division durchführe immer bei allen Tuppeln der Wert "0" als Ergebniss...
    So sind die Regeln ;-)

    Die einzelnen Werte werden als INT in den Tabellen gespeichert, so dass bei allen Operatoren die Ganzzahlen-Regeln gelten. Damit ein Dezimalwert als Ergebnis der Division entsteht, müssen die Werte über CAST in die benötigte Genauigkeit konvertiert werden:

    [highlight=SQL]
    SELECT
    Bezeichnung,
    CAST(SUM(Anzahl_Stimmen) AS DECIMAL(10,2)) /
    CAST(SUM(Anzahl_Wahlberechtigte) AS DECIMAL(10,2)) AS Ergebnis
    FROM wahlkreis w
    JOIN erreicht e ON e.Nr = w.Nr
    GROUP BY
    w.Bezeichnung
    [/highlight]

    Comment


    • #3
      Vielen Dank für die Antwort, jetzt verstehe ich wo das Problem lag... Integer können ja keine Kommazahlen ausdrücken...

      viele grüße
      listensoul

      Comment


      • #4
        Danke

        Hey,

        danke für diesen Beitrag, schade das MS nicht in der Lage ist so eindeutige Antworten zu geben. Ich hab einige englische Foren gefunden, die noch nicht dahinter gekommen sind...

        Danke
        Ich hab keine Ahnung was ich tue aber ich will es lernen

        Comment

        Working...
        X