zu Blöd für Durchschnittsrechnen

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Tach,

scheinbar bin ich über Nacht verblödet und bekomme nicht mal mehr eine einfache Durchschnittsrechnung zustande.

Ich habe eine Tabelle, in der die Anzahl von Schulnoten gespeichert werden. Dafür habe ich sechs spalten:

ONE, TWO, THREE, ...

in ONE wird die Anzahl der Schüler gespeichert die eine 1 geschrieben haben, in TWO die Anzahl der Schüler die eine 2 geschrieben haben,usw.. Außerdem beinhaltet diese Tabelle noch eine Spalte, die die ID der Schularbeit widerspiegelt. Jetzt möchte ich alle Schularbeiten abfragen deren Schnitt zwischen zwei vorher definierten Noten liegen. Man sollte meinen, dass das ansich kein Problem ist, aber irgendwie stell ich mich da scheinbar verdammt blöd an. Mein SQL schaut so aus:

SELECT PID FROM Noten WHERE (ONE * 1 + TWO * 2 + THREE * 3 + FOUR * 4 + FIVE * 5 + SIX * 6) / (ONE + TWO + THREE + FOUR + FIVE + SIX) BETWEEN wert1 AND wert2

Klärt mich bitte über meinen peinlichen Fehler auf ... Danke 😳
 
einfacher wirds mit Beispieldaten + falschen Ergebnis oder Fehlermledung..

außerdem wie immer:
klein anfangen, lasse erst mal die Felder 3-6 völlig außer Acht,
solange du nicht den Durchschnitt von 1 und 2 berechnen kannst, interessieren die doch gar nicht, stören nur,
zum Glück hast du nicht 99 Felder 😉
 
Ohne Gewähr, kann es sein, dass da vom SQL Server eine Integer Rechnung vorgenommen wird? Die Rechnung ansich sieht richtig aus.
 
@SlaterB

Fehlermeldung gibts keine, ich bekomm ja auch immer was raus. Aber das gewünschte Ergebnis ist es selten. Das Schema, dass dahintersteht ist mir aber bis jetzt noch nicht klar (sonst hät ichs ja auch schon selbst lösen können :? )

@Lim_Dul

Wo denkst du, dass eine Integer Berechnung vorgenommen wird? Meinst er kann das * net? Ist ne HSQLDB (falls das hilft 🙂 ).

[edit] OK, Fehler ausgemacht, aber kA wie ich ihn beheben kann. Und zwar wird anscheinend bei einer Kommazahl abgerundet. Wie bring ich die DB dazu die Kommazahl zu behalten und korrekt weiter zu suchen?

@Lim_Dul meintest du das?
 
kenn mich jetzt mit dem Rechnen gar nicht aus,
aber vielleicht reicht dir als Workaround, die erste Summe mit 100 oder 1000 zu multiplizieren und dann erst zu teilen,

damit hast du dann z.B. 4320 statt 4.32, du müsstest in der Anwendung noch dividieren und die Werte für das BETWEEN anpassen,
bisschen aufwendig, aber zumindest unabhängig(er) von der Art der DB-Rechnung
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben