Promediar un campo que contiene valores nulos

Una máquina genera un archivo tipo ascci, con campos numéricos y de fecha, los cuales importo a la bd.
El problema es que si en cierto día hubo alguna falla y no se registraron bien los datos, la máquina llena cada campo con 99999(cinco nueves) o en algunas ocasiones con (99970), en cada campo debo de calcular el promedio, pero sin tomar en cuenta esos valores, que en este caso se tomarían como nulos.
El promedio lo muestro en un informe, ¿cómo le hago para sacar el promedio unicamente de los campos que son diferentes de 99999 o 99970?
1

1 respuesta

Respuesta
1
Imagino que el informe se basa en una consulta, que es en donde calculas el promedio, si lo que entiendo que quieres es excluir de la consulta determinados valores, tienes que usar la expresión: Negado "99999"
He usado una consulta con la Tabla Clientes para evaluar la expresión y Visto en SQL seria algo así:
SELECT Clientes.IdCliente, Clientes.NombreCompañía
FROM Clientes
WHERE ((Not (Clientes.NombreCompañía)="Alfreds Futterkiste") AND (Not (Clientes.NombreCompañía)="Antonio Moreno Taquería"));
Otra opción seria eliminar de la tabla los valores que no queremos usando Filtro excluyendo la selección y guardando la consulta como tabla.
Acabo de hacer la consulta que sigue:
SELECT [registro].[presion]
FROM registro
WHERE ((Not ([registro].[presion])="99999") And (Not ([registro].[presion])="99970"));
Y me marca un error: "Data type mismatch in criteria expression"
De hecho en la consulta solamente muestro todos los registros dependiendo del día, mes y año que se elija, esa misma consulta la utilizo en el informe desde donde saco el promedio.
Es que el problema es este: supón que tengo 5 registros, con los siguientes campos:
Fecha hora temperatura presión viento
01/01/01 6:00 24.23 845.21 14.23
01/01/01 6:20 23.5 846.23 15
01/01/01 6:30 23.5 99999 14
01/01/01 6:40 23.4 856.25 0
01/01/01 6:50 21.25 99999 14.2
Para empezar el cero es un valor válido, los 99970 y 99999 no se debe de tomar en cuenta, pero si hago una consulta que me diga que me muestre los registros que sean menores de 99970 me muestra nada más 3 registros, ¿pero qué onda con los demás campos que si tienen datos?
Ese es mi gran problema.
Entre otros...
Muchas gracias por tomarte la molestia de responder mis dudas
Gracias!
1º Crea una consulta nueva. Añade la tabla registro. Añade el campo presión y en la cuadricula Criterios le pones <>99999 Y <>99970
con esto no tendremos en cuenta esos dos valores de presión. Prueba a añadir el campo presión 2 veces en la consulta, en la cuadricula Criterios del primer presión le pones <>99999 Y <>99970 y en la cuadricula Criterios del segundo presión le pones <99970
Con esto indicamos que nos muestre todos los registros distintos de 99999 y 99970 y que nos muestre los valores menores que 99970.
2º Lo que yo haría ahora es guardar esta consulta de selección y sacar los promedios de esta en una consulta nueva. Más que nada porque vamos a añadir Totales y se nos puede complicar la cosa.
Un cordial saludo
Raul
NOTA: no te cortes con access, acabarás adorándola, y menos todavía preguntando. Por cierto, asegurate de hacer backups o copias de la base de datos a menudo, no te arrepentirás.
Disculpa, acabo de revisar la consulta y como access es tan lista se autoajusta, puedes usar un solo campo presión y meter todo en Criterios:
<>99999 Y <>99970 Y <99970

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas