Ich habe einen Tisch, der aussieht wie dieser Anrufer 'Makerar'
cname | wmname | avg
--------+-------------+------------------------
canada | zoro | 2.0000000000000000
spain | luffy | 1.00000000000000000000
spain | usopp | 5.0000000000000000
Und ich möchte den maximalen Durchschnitt für jeden c-Namen auswählen.
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
aber ich werde einen Fehler bekommen,
ERROR: column "makerar.wmname" must appear in the GROUP BY clause or be used in an aggregate function
LINE 1: SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname;
Also mache ich das
SELECT cname, wmname, MAX(avg) FROM makerar GROUP BY cname, wmname;
Dies führt jedoch nicht zu den beabsichtigten Ergebnissen, und die folgende falsche Ausgabe wird angezeigt.
cname | wmname | max
--------+--------+------------------------
canada | zoro | 2.0000000000000000
spain | luffy | 1.00000000000000000000
spain | usopp | 5.0000000000000000
Tatsächliche Ergebnisse sollten sein
cname | wmname | max
--------+--------+------------------------
canada | zoro | 2.0000000000000000
spain | usopp | 5.0000000000000000
Wie kann ich dieses Problem beheben?
Hinweis: Diese Tabelle ist eine ANSICHT, die aus einer vorherigen Operation erstellt wurde.
wmname="usopp"
erwartet und nicht zum Beispiel wmname="luffy"
?