domingo, 9 de diciembre de 2007

Consultas de Resumen






La funciòn de columnas (AVG) de SQL toma una columna de datos completada como argumento y produce un ùnico elemento de datos que resume la estructura.

SQL ofrece 6 funciones de columna diferente de datos:

  • SUM. Calcula el total de una columna. Los datos de la columna deben tener un tipo numerico (entero, decimal, flotante o meneda en el resultado es mayor precisiòn.
  • AVG. Calcula el valor medio de una columna. Suma los valores de la columna y despues los divide entre los nùmeros de valores de la columna.
  • MIN. Halla el menor valor de una columna.
  • MAX. Halla el mayor valor de una columna. Estas dos hallan valores menores y mayores los datos de las columnas que contienen informaciòn nùmerica los de cadena compara los nùmeros en un orden algebraico y la fecha-hora compara secuencialmente, la comparaciòn de dos cadenas depende del conjunto de caràcteres que use y el resultado es el mismo tipo de dato que los de la columna.
  • COUNT. Cuenta el nùmero de valores de una columna. Los datos de la columna pueden ser de cualquier tipo, devuelven un entero en el tipo dato de la columna del resultado, no importa realmente la columna que se especifique como argumento de la funciòn COUNT.
  • COUNT(*) Cuenta las filas de los resultados.

La funciòn de la columna aparece en la lista de selecciòn produciendo una columna de resumen o una lista de selecciòn no puede contener ninguna funciòn de columna produciendo una consulta detallada. La regla es un poco mas compleja en las consultas agrupadas y en subconsultas una de las funciones que usan las columnas de esta tabla de resultados detalladosque genera una ùnica fila de resultados de resumen.

E l estandar SQL de ANSI/ISO especifica que los valores NULL de la columna se ignora por las funciones de columna, acontinuaciòn se mencionan reglas para el manejo d valores NULL.


  • Si alguno de los valores de dato de una columna es NULL se ignora para el pròposito del càlculo del valor de funcón de una columna .

  • Si cada elemento de dato de la columna es NULL, entonces SUM Y AVG.

  • MIN() Y MAX devuelve un valor NULL; la funciòn COUNT() devulve el valor cero

  • Si hay un elemento de cda dato en la columna (columna vacìa) entonces la funciòn de la columna SUM()AVG(), MIN() Y MAX() devuelve el valor NULL; la función COUNT devuelve el valor cero.

  • COUNT(*)cuenta filas y no depende de la presencia o ausencia de los valores NULL. Si hay una fila devuelve un valor cero.

Los productos comerciales de SQL pueden producir resultados diferentes en le estándar si los valores de datos de una columna son NULL o cuando la funciòn de columna se aplica a una tabla vacìa, poreso antes de saber el compaortamiento del estàndar se deberia de specificar DBMS que se usa.

DISTINCT en la lista de selecciòn elimna filas duplicadas de resultados antes del pigmento de la funciòn de columnas. El estàndar SQL1 no permite expresiones solamente nombre simple de columna permite la clave DISTINCT las funciones de columna SUM() Y AVG() MIN Y MAX no porque no tienen pacto en sus resultados.

COUNT no requiere valores de columna de la clave COUNT (*) no puede especificar esta funciòn con valores de datos.

Las consultas de agrupaciòn concluye la clàusula GROUP BY que agrupa los datos de sus tablas fuente en una ùnica fila d resumen, por cada grupo de filas.Las columnas de agrupaciòn como dividen las filas en grupos. L a clàusula GROUP BY, dice que SQL, que divida los resultados dtallados en grupos y que aplique una funciòn de columna separadas por grupos produciendo un resultado por grupo. Las consultas de agrupaciòn siguen los pasos de las reglas de procesamiento añadiendo 3 pasos mas.


  • Si hay una clàusula GROUP BY organiza las filas restantes de la tabla productos en dos grupos, de forma que las filas de cada grupo tengan identicos valores en todas las columnas de agrupaciòn.

  • Si hay una clàusula HAVING aplica su condiciòn de bùsqueda a dada grupo de filas, conservado los grupos patra la condiciòn de bùsqueda es TRUE (y descartando aquellos para los que la condición es FALSE o NULL.
  • Para cada fila resultante (o grupo de filas), calcula el valor de cada elemento de la lista de selección para producir una única fila de resultados. Para una referencia a una columna simple, usa el valor de la columna en las filas en curso (o grupo de filas. Para una función de columnas, usa el grupo actual de filas como argumento, si se especifica GROUP BY; en caso contrario, usa el conjunto completo de resultados.

Para agrupación de múltiples columnas agrupan los resultados de la consulta en término de los contenidos de dos o más columnas proporcionando un nivel de agrupación de resultados de resumen y detallados de consulta. El estándar SQL añadio una cláusula COMPUTE para calcular los subtotales.

Las restricciones sobre los elementos aparecen en la lista de selección de una consulta de agrupación puede ser:

  • Una constante
  • Una función de columna, que prodece un único valor resumiendo las filas del grupo
  • Una columna de agrupación, que por su deficnición tiene el mismo valor en cada fila del grupo.
  • Una expresión que contenga combinaciones de lo anterior.

Las limitaciones de las consultas de agrupación es que SQL ignora la informacion de las claves primarias y externas al analizar las consultas de agrupación.

El estándar ANSI/ISO especifca que los valores NULL en una agrupación de columnas son diferentes en las cláusula WHERE y en la cláusula GROUP BY los valores NULL son iguales formando cada cláusula su grupo de valores NULL para tener un resultado debe construir una tabla de test de comprobación para saber el comportamiento de SGBD.

La cláusula HAVING especifica una condición de búsqueda para grupos, se puede usar para destacar y seleccionar los grupos de filas. Para resticciones sobre condiciones de búsqueda de grupos es excluir o incluir grupos de filas de resultados, aplicando la cláusula WHERE para filas individuales, HAVING para un grupo de filas, la clásula HAVING para valores NULL en condicones de búsqueda utlizan las mismos resultados que WHERE en la cual actua igual en los grupos de resultados de consultas. La cláula HAVING puede trabajar sin la cláusula GROUP BY considerando un resulatdo detallado de la consulta en un único grupo, la cual lo utiliza rara ala vez.


No hay comentarios: