Summenbildung

msart

Benutzer
Beiträge
10
Hallo zusammen,

ich habe eine Tabelle mit verschiedenen Teilnehmern, die alle eine unterschiedliche Anzahl von Ergebnissen haben. Zu einem Ergebnis gehören immer 10 Zeilen mit Werten. Ich möchte jetzt alle 10 Zeilen ein Zwischenergebnis bilden und dann die besten Zwischenergebnisse ( 2- 4) pro Teilnehmer als Gesamtergbnis ausgeben.
Kann mir hier wer einen Tipp geben, da ich kein SQL-Profi bin?

Vielen Dank.

LG, Max
 
Werbung:
Ich habe noch keine Abfrage erstellt. Mit fehlt der Ansatz dazu. Ich verstehe nicht, wie ich pro Teilnehmer die ersten 10 Ergebnisse (Zeilen) dAnn die nächsten 10 Ergebnisse usw. addieren kann um pro 10 Ergebnisse eine Zwischensumme bilden zu können. Die Hilfe zur SUM Funktion hat mir nicht geholfen.
LG, Max
 
Ich verstehe nicht, wie ich pro Teilnehmer die ersten 10 Ergebnisse (Zeilen) dAnn die nächsten 10 Ergebnisse usw. addieren kann
Was bedeutet denn "die ersten 10", die jüngsten, die ältesten, die besten ..?
Und wieviel Ergebnisse gibt es pro Teilnehmer und wie verändert sich das über die Zeit.
Auch wenn Du keine Abfrage hast, Du hast ja sicher eine Tabelle mit Daten oder? Zeig doch mal!
 
Hallo zusammen, hier die Tabelle.
Es geht um die Spalte FullValue. Hier möchte ich pro ID immer 10 Werte aufaddieren und eine Summe bilden. Dann die nächsten 10 Werte und wieder davon eine Zwischensumme. Bis eine neue ID beginnt. Dann diese 10 Werte wie bei ID 1 aufaddieren.

1696088906923.png
 
Code:
WITH t AS (
    SELECT    ROW_NUMBER() OVER (PARTITION BY IdShooter ORDER BY FullValue) AS zeile,
            *
    FROM    tabelle
    )
SELECT    IdShooter,
        (zeile-1) / 10 * 10 AS gruppe,
        sum(FullValue) AS GroupSumFullValue
FROM    t
GROUP BY IdShooter,(zeile-1) / 10 * 10
ORDER BY IdShooter,2
 
Guten Morgen,
vielen Dank für den Code.
Ich bekomme folgende Meldung:
1696228393675.png
Ich werde mir die WITH Funktion mal ansehen.

LG, Max
 
Du kannst das leicht umstellen:
Code:
SELECT    IdShooter,
        (zeile-1) / 10 * 10 AS gruppe,
        sum(FullValue) AS GroupSumFullValue
FROM    (
    SELECT    ROW_NUMBER() OVER (PARTITION BY IdShooter ORDER BY FullValue) AS zeile,
            *
    FROM    tabelle
) t
GROUP BY IdShooter,(zeile-1) / 10 * 10
ORDER BY IdShooter,2
Mit was führst du die Abfrage aus, eine Anwendung? Kann sein das die kein WITH unterstützen. Ist in diesem Fall aber auch nicht nötig.
 
Es handelt sich um eine MS SQL Compact 4.0 Datenbank, die ich mit CompactView öffne und die Abfrage starte.
Bei Deiner neuen Abfrage bekomme ich den Fehler:

1696231719012.png

LG, Max
 
Ich kenne SQL Compact nicht aber sieht so aus als könnte das keine Window-Funktionen Der name suggeriert ja schon einen reduzierten Funktionsumfang.

Ich kann allerdings nicht mal ROW_NUMBER() ohne OVER entdecken, der Fehler bezieht sich aber auf OVER. Kannst du mal testen ob
Code:
SELECT *,ROW_NUMBER() AS asdf FROM tabelle
funktioniert oder auch einen Fehler wirft?
 
Also wenn ich es recht überlege wüsste ich nicht, wie ich Zeilen nummerieren soll ohne entsprechende Funktionen. Habe auch nichts passendes gefunden zu SQL Compact. Gibt es vielleicht noch eine eindeutige ID in der Tabelle?
 
Du hast recht, es gibt in der Tabelle noch folgende Spalten:
1696260637636.png
Hier wird pro Teilnehmer die Schussnummer und der Schusszähler gespeichert.
Jetzt müsse ich praktisch noch die ShotNum 1 - 10 addieren, dann 11-20 usw. bis die nächste Idshooter kommt.

LG,
Max
 
Werbung:
Korrekt, das hat alles, was es braucht:
Code:
SELECT    IdShooter,
        ShotCount / 10 * 10 AS gruppe,
        sum(FullValue) AS GroupSumFullValue
FROM    tabelle
GROUP BY IdShooter,ShotCount / 10 * 10
ORDER BY IdShooter,ShotCount / 10 * 10
 
Zurück
Oben