Am Tue, 10 Apr 2012 15:21:03 +0000 schrieb Lutz Donnerhacke:
> # SELECT name, menge AS top1,
> (SELECT menge FROM positionen t2
> WHERE
t2.id = (SELECT max(id) FROM positionen
> WHERE name =
t1.name
> AND id <>
t1.id
> AND menge = (SELECT max(menge)
> FROM positionen
> WHERE name =
t1.name
> AND id <>
t1.id))) AS top2
> FROM positionen t1
> WHERE
t1.id = (SELECT max(id) FROM positionen
> WHERE name =
t1.name
> AND menge = (SELECT max(menge) FROM positionen
> WHERE name =
t1.name));
> name | top1 | top2
> -------+------+------
> test1 | 1 |
> test | 15 | 15
Kannst Du bitte kurz erläutern, wie und warum Du jedesmal noch ein
"SELECT max(id) ..." dazwischen gesetzt hast?
Die Grundstruktur verstehe ich, erst die Menge mit den Top-Werten
auswählen, und zusammenpappen mit der Menge der Top2-Werte, die die erste
Menge ausgrenzt und die verbleibenden Maxima sammelt. Aber auf den
Kunstgriff mit max(id) wäre ich nicht gekommen ...
Marc