Powered By Blogger

lunes, 13 de diciembre de 2010

CONSULTAS RESUMEN Y REFERENCIAS CRUZADAS


CONSULTAS RESUMEN

En Access podemos definir un tipo de consultas cuyas filas resultantes son un resumen de las filas del origen de la consulta , por eso las denominamos consultas de resumen, también se conocen como consultas sumarias.
Las filas del resultado de una consulta de resumen tienen una naturaleza distinta a las filas de las demás tablas resultantes de consultas, ya que corresponden a varias filas de la tabla origen.
Para simplificar, veamos el caso de una consulta basada en una sola tabla, una fila de una consulta 'no resumen' corresponde a una fila de la tabla origen, contiene datos que se encuentran en una sola fila del origen, mientras que una fila de una consulta de resumen corresponde a un resumen de varias filas de la tabla origen, esta diferencia es lo que va a originar una serie de restricciones que sufren las consultas de resumen y que veremos a lo largo del tema. Por ejemplo este tipo de consulta no permite modificar los datos del origen.
En el ejemplo que viene a continuación tienes un ejemplo de consulta normal en la que se visualizan las filas de una tabla de oficinas ordenadas por región, en este caso cada fila del resultado se corresponde con una sola fila de la tabla oficinas, mientras que la segunda consulta es una consulta resumen, cada fila del resultado se corresponde con una o varias filas de la tabla oficinas.
Una consulta de resumen se define haciendo clic sobre el botón Totales en la pestaña de Diseño.
  • En cualquiera de los dos casos se añade una fila a la cuadrícula QBE, la fila Total:
  • Las columnas que incluyamos en la cuadrícula deberán tener un valor en esa fila, ese valor le indicará a Access qué hacer con los valores contenidos en el campo escrito en la fila Campo:
  • Los valores que podemos indicar en la fila Total: son los que aparecen al desplegar la lista asociada a la celda como puedes ver en la imagen de la derecha:


Las funciones de agregado
Funciones que obtiene un resultado basado en los valores contenidos en una columna de una tabla, se pueden utilizar en una consulta de resumen ya que obtienen un 'resumen' de los valores contenidos en las filas de la tabla.
Podemos escribirlas directamente en la fila Campo: de la cuadrícula como veremos más adelante pero podemos utilizar una forma más cómoda que es seleccionando en la fila Total: de la cuadrícula la opción correspondiente a la función.
A continuación describiremos esas opciones.
  • Suma: calcula la suma de los valores indicados en el campo. Los datos que se suman deben ser de tipo numérico (entero, decimal, coma flotante o monetario
  • Promedio: calcula el promedio (la media aritmética) de los valores contenidos en el campo, el resultado puede cambiar según las necesidades del sistema para representar el valor del resultado.
  • DesvEst: calcula la desviación estándar de los valores contenidos en la columna indicada en el argumento. Si la consulta base (el origen) tiene menos de dos registros, el resultado es nulo.
  • Var: calcula la varianza de los valores contenidos en la columna indicada en el argumento. Si la consulta base (el origen) tiene menos de dos registros, el resultado es nulo. Es interesante destacar que el valor nulo no equivale al valor 0, las funciones de resumen no consideran los valores nulos mientras que consideran el valor 0 como un valor, por lo tanto en el promedio y la desviación estándar los resultados no serán los mismos con valores 0 que con valores nulos.
  • Mín y Max: determinan valores menores y mayores respectivamente de la columna. Los valores de la columna pueden ser de tipo numérico, texto o fecha. El resultado de la función tendrá el mismo tipo de dato que la columna. Si la columna es de tipo numérico Mín devuelve el valor menor contenido en la columna, si la columna es de tipo texto Mín devuelve el primer valor en orden alfabético, y si la columna es de tipo fecha, Mín devuelve la fecha más antigua y Max la fecha más posterior.
  • Primero y Último: obtiene el primer y último registro del grupo sobre el que se realizan los cálculos. El orden lo determina el orden cronológico en el que se escribieron los registros.
  • Cuenta: cuenta el número de valores que hay en la columna, los datos de la columna pueden ser de cualquier tipo, y la función siempre devuelve un número entero. Si la columna contiene valores nulos esos valores no se cuentan, si en la columna aparece un valor repetido, lo cuenta varias veces. Para que cuente en número de registros hay que utilizar la función Cuenta(*) devuelve el número de filas por lo tanto contará también los valores nulos. En este caso tenemos que seleccionar la opción Expresión y escribirlo así:
  
Agrupar registros
 
Agrupar Registros

AgruparPor: permite definir columnas de agrupación. Una consulta de resumen sin columnas de agrupación obtiene una única fila resultado y los cálculos se realizan sobre todos los registros del origen.
Cuando se incluye una columna de agrupación Access forma grupos con todos los registros que tienen el mismo valor en la columna de agrupación y cada grupo así formado genera una fila en el resultado de la consulta y además todos los cálculos definidos se realizan sobre los registros de cada grupo. De esta forma se pueden obtener subtotales.

Ejemplo: queremos saber cuántos alumnos tenemos en cada población. Tenemos que indicar que queremos contar los registros de la tabla Alumnado pero antes agrupándolos por el campo Poblacion. De esta manera la función cuenta() la calculará sobre cada grupo de registros (los alumnos de la misma población). La consulta quedaría así:
Los campos de tipo memo u OLE no se pueden definir como columnas de agrupación.
  • Se pueden agrupar las filas por varias columnas, en este caso se agrupan los registros que contienen el mismo valor en cada una de las columnas de agrupación.
  • Todas las filas que tienen valor nulo en la columna de agrupación, pasan a formar un único grupo.

Incluir Expresiones

Expresión: permite poner en la fila Campo: una expresión en vez de un nombre de columna, tiene ciertas limitaciones. Sólo puede contener operandos que sean funciones de agregado (las funciones que acabamos de ver (suma( ), Promedio( ), DesvEst( ), Mín( ), Max( )...) valores fijos o nombres de columna que aparezcan con la opción AgruparPor.
En una expresión se pueden combinar varias funciones de agregado pero no se pueden anidar funciones de agregado, por ejemplo en una expresión puedo poner Max(nºhoras)-Mín(nºhoras) pero no Max(suma(nºhoras)).

Incluir criterios de busqueda
Permite poner un criterio de búsqueda que se aplicará a las filas del origen de la consulta antes de realizar los cálculos. (Ejemplo queremos saber cuántos alumnos tenemos de Valencia, para ello tenemos que contar los registros de la tabla alumnado pero seleccionando previamente los de Valencia, esto se definiría de la siguiente forma):

También se puede incluir un criterio de búsqueda en una columna que no tenga la opción Dónde, en este caso la condición se aplicará a las filas resultantes de la consulta.
Para la condición de selección se pueden utilizar los mismos operadores de condición que en una consulta normal, también se pueden escribir condiciones compuestas (unidas por los operadores OR, AND, NOT), existe una limitación, en la fila Criterios: no se podrá poner un nombre de columna si esta columna no es una columna de agrupación.


REFERENCIAS CRUZADAS


Cuando queremos representar una consulta resumen con dos columnas de agrupación como una tabla de doble entrada en la que cada una de las columnas de agrupación es una entrada de la tabla.
Ejemplo: queremos obtener las ventas mensuales de nuestros empleados a partir de los pedidos vendidos. Tenemos que diseñar una consulta resumen calculando la suma de los importes de los pedidos agrupando por empleado y mes de la venta.
La consulta quedaría mejor si se presenta los datos en un formato más compacto como el siguiente:
Pues este último resultado se obtiene mediante una consulta de referencias cruzadas.
Observa que una de las columnas de agrupación (empleado) sigue definiendo las filas que aparecen (hay una fila por cada empleado), mientras que la otra columna de agrupación (mes) ahora sirve para definir las otras columnas, cada valor de mes define una columna en el resultado, y la celda en la intersección de un valor de empleado y un valor de mes es la columna resumen, la que contiene la función de agregado (la suma de importes).
Las consultas de referencias cruzadas se pueden crear desde la vista diseño pero es mucho más cómodo y rápido utilizar el asistente.



El asistente para consultas de referencias cruzadas
Clic en el botón Asistente para Consultas en la pestaña Crear:
Asistente para consultas
Elegir Asist. consultas de tabla ref.cruzadas del cuadro de diálogo.
Aparece la primera ventana del asistente:
Luego introducir el origen de la consulta, la tabla o consulta de donde cogerá los datos.
En el apartado Ver podemos elegir si queremos ver la lista de todas las Tablas, la lista de todas las Consultas o Ambas.
Si la consulta que estamos creando necesita sacar los datos de todos los registros de una sola tabla  se  utiliza como origen esa tabla, caso contrario definir una consulta normal para seleccionar las filas que entran en el origen o combinar varias tablas si la consulta que estamos creando necesita datos de varias tablas y esa consulta será el origen de la consulta de referencias cruzadas.
Clic sobre el nombre del origen elegido y Siguiente.

El asistente para consultas de referencias cruzadas (cont.)

El asistente introducir el encabezado de filas. Una de las columnas de agrupación servirá de encabezado de filas y la otra encabezado de columnas, si una de esas columnas puede contener muchos valores distintos y la otra pocos, elegiremos la primera como encabezado de filas y la segunda para encabezado de columnas.
Para seleccionar el encabezado de filas, clic sobre el campo y clic . Al pasar el campo a la lista Campos seleccionados: aparece en la zona inferior un ejemplo de cómo quedará la consulta; hemos seleccionado el campo nºhoras y vemos que en la consulta aparecerá una fila por cada valor distinto del campo nºhoras.
Si nos hemos equivocado de campo pulsamos el botón y el campo se quita de la lista de campos seleccionados.
Podemos seleccionar hasta tres campos. Si seleccionamos varios campos habrá en el resultado de la consulta tantas filas como combinaciones distintas de valores de esos tres campos hayan en el origen de la consulta.
Los botones con las flechas dobles son para pasar de golpe todos los campos.
A continuación pulsamos el botón Siguiente>
Aquí introducir el encabezado de columnas. Sólo podemos elegir un campo y por cada valor distinto existente en el origen, generará una columna con el valor como encabezado de columna.
En la parte inferior de la ventana se puede ver cómo quedará el resultado, vemos que al seleccionar el campo Fecha Inicio, aparecerá en el resultado de la consulta una columna por cada valor que se encuentre en la columna Fecha Inicio de la tabla Cursos.

El asistente para consultas de referencias cruzadas (cont.)

Como el campo que hemos elegido como encabezado de columna, es de tipo Fecha, el asistente nos permite refinar un poco más el encabezado de columna con la siguiente ventana:
Cuando el encabezado de columna es una fecha, normalmente querremos los totales no por cada fecha sino por mes, año o trimestre por eso el asistente nos pregunta en esta ventana qué tipo de agrupación queremos.
Por ejemplo hemos seleccionado el intervalo Mes, pues en el resultado aparecerá una columna por cada mes del año en vez de por cada fecha distinta. Aquí también podemos apreciar el efecto en la zona inferior de la ventana.
Después de pulsar el botón Siguiente.
Aquí nos pregunta qué valor debe calcular en la intersección de columna y fila.
En la lista Funciones: seleccionamos la función de agregado que permite calcular ese valor, y en la lista Campos: elegimos el campo sobre el cual actuará la función de agregado. Por ejemplo hemos seleccionado Codigo Curso y la función Cuenta, por lo tanto en cada intersección tendremos el número de cursos iniciados en ese mes con ese nº de horas.

El asistente nos permite también añadir a la consulta una columna resumen de cada fila, esta columna contiene la suma de los valores que se encuentran en la fila. En nuestro ejemplo me daría el número total de cursos con el nº de horas de la fila. Para que el asistente añada esta columna tenemos que activar la casilla Sí, incluir suma de filas.

El asistente para consultas de referencias cruzadas (cont.)

El asistente nos pregunta el nombre de la consulta, este nombre también será su título.
Antes de pulsar el botón Finalizar podemos elegir entre:
  • Ver la consulta en este caso veremos el resultado de la consulta, por ejemplo:

  • Modificar el diseño, si seleccionamos esta opción aparecerá la vista Diseño de consulta donde podremos modificar la definición de la consulta.
La Vista de Diseño


La vista diseño de una consulta de referencias cruzadas es muy parecida a la de una consulta resumen con una fila añadida, la fila Tab ref cruz.
Esta nueva fila define los conceptos que ya hemos visto con el asistente.







1 comentario: