PDF de programación - 1. DML. Las consultas de resumen

Imágen de pdf 1. DML. Las consultas de resumen

1. DML. Las consultas de resumengráfica de visualizaciones

Publicado el 14 de Abril del 2019
172 visualizaciones desde el 14 de Abril del 2019. Una media de 14 por semana
116,0 KB
9 paginas
1. DML. Las consultas de resumen

1.1 Introducción


Una de las funcionalidades de la sentencia SELECT es el permitir obtener resúmenes de los datos

contenidos en las columnas de las tablas.

Para poder llevarlo a cabo la sentencia SELECT consta de una serie de cláusulas específicas (GROUP
BY, HAVING), y Transact-SQL tiene definidas unas funciones para poder realizar estos cálculos, las funciones
de agregado (también llamadas funciones de columna).

La diferencia entre una consulta de resumen y una consulta de las que hemos visto hasta ahora es que
en las consultas normales las filas del resultado se obtienen directamente de las filas del origen de datos y
cada datos que aparece en el resultado tiene su dato correspondiente en el origen de la consulta mientras que
las filas generadas por las consultas de resumen no representan datos del origen sino un total calculado sobre
estos datos. Esta diferencia hará que las consultas de resumen tengan algunas limitaciones que veremos a lo
largo del tema.

Un ejemplo sería:


SELECT Oficina, Region, Ventas

SELECT Region, SUM (Ventas)

FROM Oficinas

ORDER BY Region

FROM Oficinas

GROUP BY Region

Oficina

Ventas

150.000 Pts.

Region
centro
centro
este
este
este
este
norte
oeste
oeste

Suma de Ventas

0 Pts.
368.000 Pts.
735.000 Pts.
693.000 Pts.

24
23
28
13
12
11
26
22
21

A la izquierda tenemos una consulta simple que nos saca las oficinas con sus ventas ordenadas por
región, y a la derecha una consulta de resumen que obtiene la suma de las ventas de las oficinas de cada
región


Region
centro
este
norte
oeste

185.000 Pts.
836.000 Pts.

150.000
1.796.000

1.021.000



1.2 Las funciones de agregado


Una función de agregado SQL acepta un grupo de datos (normalmente una columna de datos) como
argumento, y produce un único dato que resume el grupo. Por ejemplo la función AVG() acepta una columna
de datos y devuelve la media aritmética (average) de los valores contenidos en la columna.

El mero hecho de utilizar una función de agregado en una consulta, convierte ésta en una consulta de

resumen.


Todas tienen una estructura muy parecida:


Función ([ALL|DISTINCT] expression)


El grupo de valores sobre el que actúa la función lo determina el resultado de la expresión que será un
nombre de columna o una expresión basada en una columna o varias del origen de datos. No se permiten
utilizar como argumentos funciones de agregado ni subconsultas. En la expresión nunca puede aparecer una
función de agregado ni una subconsulta.


1

La palabra ALL indica que se tiene que tomar en cuenta todos los valores de la columna. Es el valor por

defecto.

WHERE (si la hubiera).

La palabra DISTINCT hace que se consideren todas las repeticiones del mismo valor como uno sólo.
Todas las funciones de agregado se aplican a las filas del origen de datos una vez ejecutada la cláusula

Si exceptuamos la función COUNT, todas las funciones de agregado ignoran los valores NULL.
Una función de agregado puede aparecer en la lista de selección en cualquier lugar en el que puede
aparecer un nombre de columna. Puede, por ejemplo, formar parte de una expresión pero no se pueden anidar
funciones de agregado.

Tampoco se pueden mezclar funciones de columna con nombres de columna ordinarios. Hay

excepciones a esta regla pero cuando definimos agrupaciones y subconsultas que veremos más adelante.

1.2.1 La función COUNT



COUNT ({[ALL|DISTINCT] expresion | * } )


Expresion puede ser de cualquier tipo excepto text, image o ntext. No se permite utilizar funciones de

agregado ni subconsultas. El tipo de dato devuelto es int.

Si el número de valores devueltos por expresion es superior a 231-1, COUNT genera un error, en ese

caso hay que utilizar COUNT_BIG.


La palabra ALL indica que se tienen que tomar todos los valores de la columna, mientras que DISTINCT
hace que se consideren todas las repeticiones del mismo valor como uno solo. Estos parámetros son
opcionales, por defecto se considera ALL.



Por ejemplo:

SELECT COUNT(region) FROM oficinas;


Devuelve 9 porque tenemos nueve valores no nulos en la columna region.


SELECT COUNT(DISTINCT region) FROM oficinas;


Devuelve 4 porque tenemos nueve valores distintos, no nulos, en la columna región, los valores

repetidos los considera sólo una vez.

*
Si utilizamos * en vez de expresión, se cuentan todas las filas para devolver el número total de filas del

origen.

COUNT(*) no acepta parámetros y no se puede utilizar con DISTINCT. COUNT(*) no requiere un
parámetro expression porque, por definición, no utiliza información sobre ninguna columna específica. En el
recuento se incluyen las filas que contienen valores NULL.

SELECT COUNT(*) FROM empleados WHERE oficina=12;


Obtiene el número de empleados asignados a la oficina 12.


1.2.2 La función COUNT_BIG


Funciona igual que la función COUNT. La única diferencia entre ambas funciones está en los valores
devueltos, COUNT_BIG siempre devuelve un valor de tipo bigint y por lo tanto admite más valores de entrada,
no está limitado a 231-1 valores de entrada como COUNT.



1.2.3 La función MAX



MAX ([ALL|DISTINCT] expression)


Devuelve el valor máximo de la expresión sin considerar los nulos.


2

MAX se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de

bit. No se permiten funciones de agregado ni subconsultas.

Utilizar DISTINCT no tiene ningún sentido con MAX (el valor máximo será el mismo si consideramos las

repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.
1.2.4 La función MIN



MIN ([ALL|DISTINCT] expression)


Devuelve el valor mínimo de la expresión sin considerar los nulos.
MIN se puede usar con columnas numéricas, de caracteres y de datetime, pero no con columnas de bit.

No se permiten funciones de agregado ni subconsultas.

Utilizar DISTINCT no tiene ningún sentido con MIN (el valor mínimo será el mismo si consideramos las

repeticiones o no) y sólo se incluye para la compatibilidad con SQL-92.



1.2.5 La función SUM



SUM ([ALL|DISTINCT] expresion )


Devuelve la suma de los valores devueltos por la expresión.
Sólo puede utilizarse con columnas numéricas.
El resultado será del mismo tipo aunque puede tener una precisión mayor.


SELECT SUM(importe) FROM pedidos;


Obtiene el importe total vendido en todos los pedidos.


1.2.6 La función AVG



AVG ([ALL|DISTINCT] expresion )


Devuelve el promedio de los valores de un grupo, para calcular el promedio se omiten los valores nulos.

El grupo de valores lo determina el resultado de la expresión que será un nombre de columna o una

expresión basada en una columna o varias del origen de datos.

La función se aplica también a campos numéricos, y en este caso el tipo de dato del resultado puede

cambiar según las necesidades del sistema para representar el valor del resultado.
1.2.7 La función VAR

VAR ([ALL|DISTINCT] expresion )


Devuelve la varianza estadística de todos los valores de la expresión especificada.
VAR sólo se puede utilizar con columnas numéricas. Los valores NULL se pasan por alto.


1.2.8 La función VARP



VARP ([ALL|DISTINCT] expresion )


Devuelve la varianza estadística de la población para todos los valores de la expresión especificada.
Sólo se puede utilizar con columnas numéricas. Los valores NULL se pasan por alto.



3

1.2.9 La función STDEV



STDEV ([ALL|DISTINCT] expresion )


Devuelve la desviación típica estadística de todos los valores de la expresión especificada.
Sólo se puede utilizar con columnas numéricas. Los valores NULL se pasan por alto.


1.2.10 La función STDEVP



STDEVP ([ALL|DISTINCT] expresion )


Devuelve la desviación estadística estándar para la población de todos los valores de la expresión

especificada.

Sólo se puede utilizar con columnas numéricas. Los valores NULL se pasan por alto.


1.2.11 La función GROUPING



GROUPING (nb_columna)


Es una función de agregado que genera como salida una columna adicional con el valor 1 si la fila se
agrega mediante el operador CUBE o ROLLUP, o el valor 0 cuando la fila no es el resultado de CUBE o
ROLLUP.

Nb_columna tiene que ser una de las columnas de agrupación y la cláusula GROUP BY debe contener

el operador CUBE o ROLLUP.

En el siguiente punto, cuando veamos las cláusulas CUBE y ROLLUP quedará más claro.


1.3 Consultas agrupadas (cláusula GROUP BY).


Hasta ahora las consultas sumarias que hemos visto obtienen totales de todas las filas del origen y

producen una única fila de resultado.


Muchas veces cuando calculamos resúmenes nos interesan totales parciales, por ejemplo saber de cada
empleado cuánto ha vendido, y cuál ha sido su pedido máximo, de cada cliente cuándo fue la última vez que
nos compró, etc.

En todos estos casos en vez de obtener una fila única de resultados necesitamos una fila por cada

empleado, clientes, etc.


Podemos obtener estos subtotales con la cláusula GROUP BY.


GROUP BY [ ALL ] expresion_agrupacion [ ,...n ]
[ WITH { CUBE | ROLLUP } ]


Una consulta con una cláusula GROUP BY agrupa los datos de la tabla origen y produce una única fila
resultado por cada grupo formado. Las columnas indicadas en el GROUP BY se llaman columnas de
agrupación o agrupamiento .


Cuando queremos realizar una agrupación múltiple, por varias columnas, éstas se indican en la cláusula

GROUP BY en el orden de mayor a menor agrupación.


e
  • Links de descarga
http://lwp-l.com/pdf15728

Comentarios de: 1. DML. Las consultas de resumen (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios
Es necesario revisar y aceptar las políticas de privacidad

Revisar política de publicidad