Access - Obtener promedio de registros sólo de una fecha determinada

 
Vista:

Obtener promedio de registros sólo de una fecha determinada

Publicado por Fofitólogo (40 intervenciones) el 28/11/2020 18:32:44
Hola,

En una base de datos de una biblioteca Access de libros entre cuyos campos está una puntuación me gustaría sacar la media de puntuación sólo de los libros que cumplen un requisito que es el siguiente: Estar finalizados en el mismo año que el registro correspondiente.

Es decir, dentro del formulario en el registro correspondiente quiero calcular la media de los libros que se corresponden al mismo año que el registro activo.

Entre los campos de la tabla correspondiente de la base de datos tengo uno que es la fecha de finalización (con tipo de datos "Fecha/hora"). Ese es el que usaría de referencia...

No obstante no sé como enfocarlo. ¿Agrupando por una consulta?. Aparte, ¿en los campos "fecha" se puede aislar de alguna manera el año, a pesar de estar guardados con día, mes y año?

Agradezco cualquier ayuda con este asunto
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Obtener promedio de registros sólo de una fecha determinada

Publicado por Anonimo (3303 intervenciones) el 28/11/2020 22:04:14
La función YEAR devuelve el año de una fecha Access

Deduzco que la función de dominio DAvg no se puede aplicar, otra alternativa para obtener ese dato:

Se crea un filtro que devuelva los datos a calcular (sea el año o el año y 'algo mas')

Una función de dominio DCount sobre ese conjunto y con el filtro creado antes devuelve el numero de registros
Otra función DSum (sumando el campo de puntuación) sobre ese mismo conjunto y aplicando el mismo filtro, devuelve el total de puntos

Función suma / Función cuenta = media aritmética
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener promedio de registros sólo de una fecha determinada

Publicado por Fofitólogo (40 intervenciones) el 28/11/2020 22:26:42
Gracias por la respuesta. Me vienen muy bien las funciones que comentas.

Aunque mis conocimientos están muy limitados.

¿Cómo crearía el filtro del que hablas?

Los filtros que conozco son los que se emplean en el "modo usuario" dentro del formulario, en los que se puede filtrar en base a distintos parámetros.

Pero en el "modo programación" necesitaría alguna explicación más concreta para saber como realizar el filtro. ¿Es por medio de una consulta?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener promedio de registros sólo de una fecha determinada

Publicado por Anonimo (3303 intervenciones) el 28/11/2020 23:10:58
Se crea una consulta con el editor grafico de consultas:

Se añade la tabla (o tablas relacionadas) y se le aplican los filtros (o condiciones) que se consideren adecuados para obtener el conjunto deseado (una clásica consulta de selección)

Una vez que se logra el conjunto deseado y con la consulta en su 'vista diseño' (la opción por defecto) se selecciona en el menú la opción 'Vista SQL'

Lo que aparece detrás del WHERE es el filtro o condición, normalmente bastara un simple Copy & Paste

Un ejemplo (inventado):

La consulta que devuelve los datos correctos:
Select Nombre, Apellidos, Edad From Alumnos WERE Year ([Año de nacimiento]) = 2009;

A continuación del Where:
==> Year ([Año de nacimiento]) = 2009 <== la condición aplicada

¿Qué problema puede haber el hacer experimentos en/con una copia de la base de datos?
.- si se rompe a la papelera y se hace una nueva copia para intentar otra posibilidad
.- si se logra éxito .... se aplica en la original lo que (se supone) se ha aprendido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener promedio de registros sólo de una fecha determinada

Publicado por Fofitólogo (40 intervenciones) el 29/11/2020 09:54:15
Buenas, gracias.
No he conseguido hacer funcionar esa consulta. No sé por qué no me daba ningún resultado en el año seleccionado aunque los hubiera, usando esa sintaxis (con WHERE)

En cualquier caso, basándome en ello se me ha ocurrido una consulta que seguramente me va a venir bien para lo buscado, que es agrupando por años.

Escribo el SQL tal como ha quedado:
1
2
3
SELECT Year([Fecha]) AS Año, Avg(Libros.Nota) AS PromedioDeNota
FROM Libros
GROUP BY Year([Fecha]);

Esto me da el resultado de consulta esperado. Ya tengo los promedios de cada año. La consulta la he llamado Años, al campo en el que están los promedios se llama PromediodeNota, y en el que está el año se llama Año

Ahora lo que no acabo de hacer funcionar es la comparación en el formulario con esa fecha.
En el campo que quiero que salga la media hago esta búsqueda:

=DBúsq("[PromediodeNota]";"[Años]";"[Año]=Año([fecha_fin]") pero me devuelve #Error

Teniendo en cuenta que el campo del formulario en el registro actual con el que quiero comparar es ese: fecha_fin (está introducido con día mes y año)

¿Alguna ayuda con la sintaxis?

P.D. Buen consejo el de hacer las pruebas en copia de la base de datos... así lo estoy haciendo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener promedio de registros sólo de una fecha determinada. Solucionado.

Publicado por Fofitólogo (40 intervenciones) el 29/11/2020 12:06:04
Buenas, por si a alguien le sirve he seguido haciendo pruebas y finalmente he obtenido el resultado esperado con esta expresión:

1
=DBúsq("[PromediodeNota]";"[Años]";"[Año]=Year ([fecha_fin])")

Cuestión de cambiar la función a inglés (Year)... Y eso que en la vista diseño de consultas, el mismo Access ha españolizado esa función a "Año". Pensé que en mi Access mejor ponerlo en español, pero ya veo que aquí no.

Gracias

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Obtener promedio de registros sólo de una fecha determinada. Solucionado.

Publicado por Anonimo (3303 intervenciones) el 29/11/2020 15:26:02
Una nota:

Access funciona 'en ingles', el idioma de sus creadores y políticamente común.

Tras ello se le 'añade' una capa mas de programación que intermedia entre el motor (en ingles) y la capa del idioma local, intenta (con éxito algunas veces y fracasando en otras) una traducción bidireccional entre idiomas.

Podría casi 'garantizar' que si se utilizan las 'palabras reservadas' (comandos, funciones ...) en el idioma original, los problemas se minimizan.

Las consultas creadas con el motor grafico de Access en su 'vista SQL' muestran lo que espera el motor de Access (ingles, no idioma local), un simple Copy & Paste debería funcionar sin muchos problemas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obtener promedio de registros sólo de una fecha determinada. Solucionado.

Publicado por Fofitólogo (40 intervenciones) el 29/11/2020 17:02:39
Ok,
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar