Hallo,
ich suche jetzt schon seit Tagen nach einer Lösung für folgendes Problem:
Ich habe eine (!) Tabelle, die folgendes enthält:
persnummer, monat, gewinn, kosten (alles Integerwerte)
Ich möchte jetzt eine Selektion über die Tabelle machen, die mittlerweile 20 Mitarbeiter und 12 Monate enthält und ermitteln, in welchem Monat jeder Mitarbeiter seinen höchsten Gewinn erwirtschaftet und in Abhängigkeit dazu gleichzeitig (!!!) seine niedrigsten Kosten verursacht hat. Es nützt nichts, dass ich einen MIN() und einen MAX() Wert errechne, da dadurch sich nicht zwingend ein Datensatz ergibt, der genau einen Monat betrifft! Es soll also zunächst der maximale Gewinn gesucht werden (erste Suche) und in dieser Abhängigkeit dann alle Datensätze, die die kleinsten Kosten dazu enthalten).
Also:
SELECT MAX(gewinn) as gew, MIN(kosten) as kst, persnummer, monat FROM t GROUP BY persnummer
bringt nichts, da mySQL losgelöst von zusammenhängenden Datensätzen einfach die Maximal- bzw. Minimalwerte sucht.
+++
Beispielwerte anhand eines Mitarbeiters:
monat 1
gewinn 1000
kosten 200
monat 2
gewinn 1100
kosten 400
monat 3
gewinn 900
kosten 500
monat 4
gewinn 1200
kosten 500
monat 5
gewinn 1200
kosten 400
Ergebnis muss sein:
Monat 5, weil hier der Gewinn am höchsten ist und dazu die Kosten am niedrigsten....
Vom theoretischen Vorgehen stelle ich mir vor, dass zunächst ein SELECT nach MAX(gewinn) und personalnummer erfolgt und mit GROUP BY persnummer zusammengefasst wird.
Ich brauche nur den ersten Monat, falls es mehrere mit den selben Gewinn- und Kostendaten gibt!
Ich habe also soviele Datensätze wie ich Mitarbeiter habe.
Jetzt muss noch die zweite Abfrage erfolgen, die als Basis die erste hat und nochmals mit der gesamten Tabelle vergleicht...
Also ein SELECT MIN(kosten), persnummer, gewinn, monat FROM t WHERE ---Zwischenergebnis----
++++
Ich nutze folgendes:
Server Version: 5.0.32-Debian_7etch5
MySQL-Client-Version: 5.0.32
Ich kann keine VIEWs anlegen (nur so zur Info)....
Wie muss der Select-Befehl aussehen? Ich habe schon mit HAVING und JOIN rumprobiert, aber die Doku unter mysql.com ist eine Katastrophe...
Vielen Dank für Eure Hilfe!