Summe ausgewählter Datensätze
Problem: In einer MySQL-Datenbank soll die Summe nur über eine bestimmte Anzahl von Datensätzen berechnet werden.
Lösung: Ein einfaches Subselect im FROM-Statement mit der Einschränkung auf die Anzahl Ergebniszeilen über das Schlüsselwort LIMIT.
SELECT SUM(zaehler) FROM (SELECT zaehler FROM tabelle LIMIT 10) sub;
Kombiniert man den Konstrukt noch mit einer ORDER BY Klausel ist es möglich die Summe der 10 höchsten oder der 10 niedrigsten Werte in der Tabelle zu berechnen.
SELECT SUM(zaehler) FROM ( SELECT zaehler FROM tabelle ORDER BY zaehler [ASC|DESC] LIMIT 10 ) sub;
Die Abfrage funktioniert natürlich auch mit der Gruppenfunktion AVG().
Was an dieser Stelle noch zu erwähnen ist, dass der Subquery-Konstrukt erst ab der Version 4.1 von MySQL funktioniert. In älteren Versionen von MySQL wird dieser nicht unterstützt und die Lösung beschränkt sich auf eine Iteration der Ergebnisliste im Quellcode der Programmier- respektive Skriptsprache.
Abgelegt unter >>
Tags >>
- insgesamt: 561 // heute: 3 // zuletzt: 7. January 2009

