Ver Mensaje Individual
  #2 (permalink)  
Antiguo 03/05/2011, 12:28
leonardo_josue
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Restringir Valores

Hola gabz:

No estoy seguro de si esto es lo que necesitas, pero puedes hacer que tu consulta no considere los registros con 0 y 99 poniendo una condición NOT IN en el where. Checa este ejemplo para ver si es lo que realmente necesitas:


Código MySQL:
Ver original
  1. mysql> create table promedios (id int, estatus int, valor int);
  2. Query OK, 0 rows affected (0.09 sec)
  3.  
  4. mysql> insert into promedios values (1,1,10),(2,1,9),(3,0,100),(4,99,-50),
  5.     -> (5,3,8);
  6. Query OK, 5 rows affected (0.05 sec)
  7. Records: 5  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> select * from promedios;
  10. +------+---------+-------+
  11. | id   | estatus | valor |
  12. +------+---------+-------+
  13. |    1 |       1 |    10 |
  14. |    2 |       1 |     9 |
  15. |    3 |       0 |   100 |
  16. |    4 |      99 |   -50 |
  17. |    5 |       3 |     8 |
  18. +------+---------+-------+
  19. 5 rows in set (0.00 sec)
  20.  
  21. mysql> select avg(valor) from promedios;
  22. +------------+
  23. | avg(valor) |
  24. +------------+
  25. |    15.4000 |
  26. +------------+
  27. 1 row in set (0.00 sec)
  28.  
  29. mysql> select avg(valor) from promedios where estatus not in (0,99);
  30. +------------+
  31. | avg(valor) |
  32. +------------+
  33. |     9.0000 |
  34. +------------+
  35. 1 row in set (0.00 sec)
  36.  
  37. mysql>

En el primer caso toma todos los registros, por lo tanto

Código:
promedio = ( 10 + 9 + 100 + -50 +  8) / 5 =  77 / 5 = 15.40
En el segundo caso desde el select se excluyen los registros con 0 y 99 de tal manera que

Código:
promedio = (10+9+8) / 3 =  27 / 3 = 9.00
Saludos
Leo.