musi występować w klauzuli GROUP BY lub być używana w funkcji agregującej

Mam stół, który wygląda jak ten „dzwoniący”

 cname  | wmname |          avg           
--------+-------------+------------------------
 canada | zoro   |     2.0000000000000000
 spain  | luffy  | 1.00000000000000000000
 spain  | usopp  |     5.0000000000000000

I chcę wybrać maksymalny avg dla każdego cname.

SELECT cname, wmname, MAX(avg)  FROM makerar GROUP BY cname;

ale dostanę błąd,

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;

więc to robię

SELECT cname, wmname, MAX(avg)  FROM makerar GROUP BY cname, wmname;

nie da to jednak zamierzonych wyników, a poniżej pokazane są nieprawidłowe wyniki poniżej.

 cname  | wmname |          max           
--------+--------+------------------------
 canada | zoro   |     2.0000000000000000
 spain  | luffy  | 1.00000000000000000000
 spain  | usopp  |     5.0000000000000000

Rzeczywiste wyniki powinny być

 cname  | wmname |          max           
--------+--------+------------------------
 canada | zoro   |     2.0000000000000000
 spain  | usopp  |     5.0000000000000000

Jak mogę rozwiązać ten problem?

Uwaga: Ta tabela jest WIDOKIEM utworzonym z poprzedniej operacji.

questionAnswers(7)

yourAnswerToTheQuestion