phpbar.de logo

Mailinglisten-Archive

AW: Summenfunktion

AW: Summenfunktion

Marco Kitsche marco.kitsche at chemie.tu-dresden.de
Mit Aug 18 11:25:55 CEST 2004


hi christian
deine idee gefällt mir sehr gut
nur leider funktioniert es noch ne so richtig
könnt ich dir vielleicht ma die tabelle als dump_datei zukommen lassen?
mit freundlichen grüssen marco

Hallo,

hier ein Vorschlag ohne Sub-Selects, aber dafür leider mit temp-Tabellen:

- eine temporäre Tabelle temp_punkte (temp_id,
benutzer_id, punkte - die temp_id muss
auto_increment sein, die benutzer_id ein
einfaches int),
- eine temporäre Tabelle temp_anzahlen
(benutzer_id,anzahl, loesch_id,max_temp_id)
- und evtl. eine Variable anzahl_eintraege (dann
kannst du ggf. später die Anzahl der zu
berücksichtigenden Einträge bequemer ändern)

SET @anzahl_eintraege=8;

TRUNCATE temp_punkte;
INSERT INTO temp_punkte(benutzer_id, punkte)
SELECT benutzer_id, punkte FROM original_benutzer_tabelle
ORDER BY benutzer_id ASC, punkte DESC;

TRUNCATE temp_anzahlen;
INSERT INTO temp_anzahlen(benutzer_id, anzahl, max_temp_id)
SELECT benutzer_id, COUNT(*), MAX(temp_id)
FROM temp_punkte
GROUP BY benutzer_id;

UPDATE temp_anzahlen
SET loesch_id = max_temp_id-anzahl+8+1
WHERE anzahl>@anzahl_eintraege;

DELETE temp_punkte.*
FROM temp_punkte INNER JOIN temp_anzahlen
ON temp_punkte.benutzer_id=temp_anzahlen.benutzer_id
AND temp_punkte.temp_id BETWEEN
temp_anzahlen.loesch_id AND
temp_anzahlen.max_temp_id;

SELECT benutzer_id, SUM(punkte) FROM temp_punkte
GROUP BY benutzer_id

Leider ist mir nichts Kürzeres eingefallen. Kann
auch leider momentan nicht testen. Vielleicht
hilft's ja trotzdem...

Grüße an die Füße,

Christiane

>einen schönen guten tag an alle hier in der mailingliste
>ich bin neu hier und hoffe nicht allzuviel falsch zu machen. ich hab ein
>problem bei der berechnung einer summe.
>meine datenbank enthält z.B 2 Spalten eine Spalte Benutzer_id und eine
>Spalte Punkte.
>z.B
>1	10
>2	6
>1	7
>2	2
>3	0
>4	5
>usw. also jede benutzer_id hat verschiedene Anzahl von Punkten. nun möchte
>ich die summe der besten 8 Punkte jeder benutzer_id berechnen.
>bis jetzt hab ich es mit einem group by benutzer_id probiert. das problem
>ist das ich dann nur die komplette summe ausrechnen kann. wenn ich es mit
>limit limitieren will dann limitiert es die benutzer_id
>meine jetzige abgrage war:
>select benutzer_id,sum(punkte) from tbl_ergebnisse group by benutzer_id
>
>wäre super wenn mir jemand helfen könnte
>mit freundlichen grüssen marco
>
>--
>Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
>-->>  http://www.4t2.com/mysql

--
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql

-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive