debe aparecer en la cláusula GROUP BY o usarse en una función agregada

Tengo una mesa que se parece a esta persona que llama 'makerar'

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

Y quiero seleccionar el promedio máximo para cada cname.

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

pero obtendré un error,

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;

entonces hago esto

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

sin embargo, esto no dará los resultados esperados, y se muestra la salida incorrecta a continuación.

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

Los resultados reales deben ser

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

¿Cómo puedo solucionar este problema?

Nota: esta tabla es una VISTA creada a partir de una operación anterior.

Respuestas a la pregunta(7)

Su respuesta a la pregunta