muss in der GROUP BY-Klausel enthalten sein oder in einer Aggregatfunktion verwendet werden

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 unten angegebene 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.

Antworten auf die Frage(7)

Ihre Antwort auf die Frage