En realidad, MySQL no toma en cuenta los NULL para las funciones agrupadas, porque a NULL no lo considera un dato, sino un estado.
Lo que yo veo mal es que está complicando la consulta con algo que debería hacer en la aplicación, como es invertir la tabla, es decir, mostrar como columnas cosas datos que son registros.
Esto devolvería datos útiles:
Luego será solo
mostrarlo como se quiere. Yo no le encuentro utilidad a construir en la consulta algo que puedes resolver con menos de diez lineas de programación.
Por otro lado, a mesar de tener una sintaxis similar, el uso de CASE en el SELECT en MySQL no es tan buena idea como en otros DMS, y es más propenso a generar errores en los backups, y en la evaluación de los datos.
Es preferible reemplazarlo con IF(), donde se pueda.
Código MySQL:
Ver original AVG(IF( DATE(fecha
) = '2015-10-13', ccmtiempomedioms
, 0)) hoy
, AVG(IF( DATE(fecha
) = '2015-10-12', ccmtiempomedioms
, 0)) ayer
, AVG(IF( DATE(fecha
) = '2015-10-11', ccmtiempomedioms
, 0)) anteayer
, AVG(IF( DATE(fecha
) = '2015-10-10', ccmtiempomedioms
, 0)) hace4dias
WHERE ccmtiempomedioms
>= 0
NOTA: No compares los números como cadenas. Genera bajas de performance por obligar a MySQL a realizar conversiones implícitas.