deve aparecer na cláusula GROUP BY ou ser usado em uma função agregada

Eu tenho uma tabela que se parece com esse chamador 'makerar'

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

E quero selecionar a média máxima para cada cname.

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

mas vou receber um erro

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;

então eu faço isso

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

no entanto, isso não dará os resultados desejados, e a saída incorreta abaixo será mostrada.

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

Os resultados reais devem ser

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

Como posso resolver esse problema?

Nota: Esta tabela é uma VIEW criada a partir de uma operação anterior.

questionAnswers(7)

yourAnswerToTheQuestion