Ver Mensaje Individual
  #7 (permalink)  
Antiguo 13/10/2015, 08:55
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Problema con avg, tiempo medio en ms

En realidad, MySQL no toma en cuenta los NULL para las funciones agrupadas, porque a NULL no lo considera un dato, sino un estado.
Cita:
http://dev.mysql.com/doc/refman/5.6/...functions.html
(...) Unless otherwise stated, group functions ignore NULL values.
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:

Código MySQL:
Ver original
  1. SELECT DATE(fecha) fecha, AVG(ccmtiempomedioms) tiempomedio
  2. FROM tabla
  3. WHERE fecha BETWEEN '2015-10-10' AND '2015-10-13'
  4. GROUP BY DATE(fecha);

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
  1.     AVG(IF( DATE(fecha) = '2015-10-13', ccmtiempomedioms, 0)) hoy,
  2.     AVG(IF( DATE(fecha) = '2015-10-12', ccmtiempomedioms, 0)) ayer,
  3.     AVG(IF( DATE(fecha) = '2015-10-11', ccmtiempomedioms, 0)) anteayer,
  4.     AVG(IF( DATE(fecha) = '2015-10-10', ccmtiempomedioms, 0)) hace4dias
  5. FROM tabla
  6. WHERE ccmtiempomedioms >= 0

NOTA: No compares los números como cadenas. Genera bajas de performance por obligar a MySQL a realizar conversiones implícitas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 13/10/2015 a las 09:02