HAber si logro explicar mejor lo que pasa.
 
 este query levanta los datos agrupados por año para cada agente. OK (ignoren el Case y la columna mes )  
Código:
 Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado     ) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, año ORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
  Ahora  si  a este mismo codigo le  cambio el group by  de año a id_evaluación, para que me muestre  todas la evaluaciones por agente. tengo que agregarle al where del select anidado la  condición de igualdad entre las  dos consultas, caso contrario me devolvía  el total del año para cada registro de es agente. Bien esto tambien ya está  ok  
Código:
 Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado=a.agente_evaluado 
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, a.id_evaluacionORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
  Bien ahora necesito los mismos datos pero agrupados por mes, entonces cambié  el  gropu by a mes , y hasta ahí no mas llego. he cambiado los  filtros del where en el select anidado, probado  de varias manera el group by y nada.  
Código:
 Select
distinct a.agente_evaluado AGENTE,
Year(Fecha_evaluacion) as 'Año',
CASE 
WHEN MONTH(fecha_evaluacion) = 1 THEN "enero"
WHEN MONTH(fecha_evaluacion) = 2 THEN "febrero"
WHEN MONTH(fecha_evaluacion) = 3 THEN "marzo"
WHEN MONTH(fecha_evaluacion) = 4 THEN "abril"
WHEN MONTH(fecha_evaluacion) = 5 THEN "mayo"
WHEN MONTH(fecha_evaluacion) = 6 THEN "junio"
WHEN MONTH(fecha_evaluacion) = 7 THEN "julio"
WHEN MONTH(fecha_evaluacion) = 8 THEN "agosto"
WHEN MONTH(fecha_evaluacion) = 9 THEN "septiembre"
WHEN MONTH(fecha_evaluacion) = 10 THEN "octubre"
WHEN MONTH(fecha_evaluacion) = 11 THEN "noviembre"
WHEN MONTH(fecha_evaluacion) = 12 THEN "diciembre"
ELSE "NUUL_MES" END  AS MES ,
SUM(IF(ID_LLAMADA>0,1,0))as 'TOTAL EVALUACIONES',
(select 
    count(b.errores_fatales)
    from evaluaciones d
    inner join notas_evaluaciones b
    on d.id_evaluacion = b.id_evaluacion
    where (d.identifica_cliente='1'OR d.escucha_activa='1' OR d.asesorar='1'
    OR d.conocimiento_producto='1' OR d.procedimientos='1' OR d.ingreso_datos='1')
    and d.agente_evaluado = a.agente_evaluado
    and d.id_evaluacion = a.id_evaluacion) as 'TOT EVAL CON ERRORES FATALES',
SUM(b.errores_fatales) as 'TOT ERRORES FATALES',
format(avg(b.NOTA_AREA_1),1) as  `ESTILO MANEJO LLAMADA`,
format(avg(b.NOTA_AREA_2),1) as  `ESTRUCTURA / HABILIDADES`,
format(avg(b.NOTA_AREA_3),1) as  `EFICIENCIA / CONOCIMIENTO`,
format(avg(b.NOTA_EVALUACION),1) as  `NOTA FINAL`
FROM evaluaciones a
INNER JOIN notas_evaluaciones b
ON a.id_evaluacion = b.id_evaluacion
left join agentes c
oN a.agente_evaluado = c.nombre_agente
where a.fecha_evaluacion between '2008/01/01' and  '2008/12/31'
And a.agente_evaluado like'%' 
and c.estado='activo'
and (c.tipo_turno='full time' or c.tipo_turno='part time')
GROUP BY a.agente_evaluado, mes ORDER BY a.agente_evaluado asc, fecha_evaluacion asc;
  Por ejemplo si  en el group by  tengo mes, y en el  where del select anidado no tengo puesta la condición "
and d.id_evaluacion = a.id_evaluacion" la  consulta me devuelve en la columna 'TOT EVAL CON ERRORES FATALES', el total de errores de ese usuario en el año.  Ahora  si agrego al where del select anidado  "
and d.id_evaluacion = a.id_evaluacion" la consulta me devuelve el valor del primer mes con registros para un usuario en particular. 
 Se agradece su paciencia y ayuda  
Chelo