Cargando



Funciones de Grupo SQL

Las funciones de grupo están incorporados en las funciones de SQL que operan en grupos de filas y devuelven un valor para todo el grupo. Estas funciones son: GROUP, HAVING, COUNT, MAX, MIN, AVG, SUM, DISTINCT.


mar 08 2014 21:18
Avanzado
mar 11 2014 10:14


sql.jpg


Las funciones de grupo están incorporados en las funciones de SQL que operan en grupos de filas y devuelven un valor para todo el grupo. Estas funciones son: GROUP, HAVING, COUNT, MAX, MIN, AVG, SUM, DISTINCT.

La clausula GROUP BY se usa junto con las funciones de grupo para recuperar los datos agrupados de acuerdo con una o más columnas.

Se pueden obtener subtotales con la cláusula GROUP BY. Una consulta con una cláusula GROUP BY se denomina consulta agrupada ya que agrupa los datos de la tabla origen y produce una única fila resumen por cada grupo formado. Las columnas indicadas en el GROUP BY se llaman columnas de agrupación.

Supongamos una tabla ventas con los siguientes campos

Id | producto | precio | cantidad | idvendedor

Ejemplo:
SELECT SUM(precio) as ventastotales FROM ventas
Obtiene la suma de las ventas totales que se realizaron el valor se asigna a ventastotales


SELECT SUM(ventas) FROM ventas GROUP BY idempleado
Se forma un grupo para cada empleado y la suma se calcula sobre las filas de cada grupo. El ejemplo anterior obtiene una lista con la suma de las ventas de lcada uno de los empleados.

La consulta quedaría mejor incluyendo en la lista de selección lel nombre del empleado para saber a qué empleado corresponde la suma de ventas:
SELECT empleados.nombre,SUM(precio) AS ventaporempleado
FROM ventas, empleados
Where ventas.idempleado=empleados.idempleado
GROUP BY idempleado

En la lista de selección SELECT ... sólo pueden aparecer :
valores constantes
funciones de columna
columnas de agrupación (columnas que aparecen en la cláusula GROUP BY)
o cualquier expresión basada en las anteriores.

Ejemplo: Queremos si tuvieramos sucursales y quisieramos obtener la suma de las ventas de los empleados agrupados por region y ciudad:


SELECT SUM(precio) as ventasporsucursal
FROM ventas
GROUP BY region,ciudad

Se agrupa primero por región, y dentro de cada región por ciudad.
Todas las filas que tienen valor nulo en el campo de agrupación, pasan a formar un único grupo. Es decir, considera el valor nulo como un valor cualquiera a efectos de agrupación.


La cláusula HAVING
La cláusula HAVING nos permite seleccionar filas de la tabla resultante de una consulta de agrupacion

En la condición de selección sólo pueden aparecer :
valores constantes
funciones de columna
columnas de agrupación (columnas que aparecen en la cláusula GROUP BY)
o cualquier expresión basada en las anteriores.

Ejemplo: Queremos saber que empleados vendieron mas de 10000 euros


SELECT *
FROM ventas
GROUP BY idempleado
HAVING AVG(precio) > 10000

Para obtener lo que se pide hay que calcular el promedio de ventas de los empleados.Tenemos que agrupar los empleados por id y calcular el promedio para cada de ventas por empleado, por último nos queda seleccionar del resultado las filas que tengan un promedio superior a 10000.

¿Cómo se ejecuta internamente una consulta de grupo?
Primero se forma la tabla origen de datos según la cláusula FROM,
se seleccionan del origen de datos las filas según la cláusula WHERE,
se forman los grupos de filas según la cláusula GROUP BY,
por cada grupo se obtiene una fila en la tabla resultante con los valores que aparecen en las cláusulas GROUP BY, HAVING y en la lista de selección,
se seleccionan de la tabla resultante las filas según la cláusula HAVING,
se eliminan de la tabla resultante las columnas que no aparecen en la lista de selección,
se ordenan las filas de la tabla resultante según la cláusula ***** BY

Una consulta se convierte en consulta de grupo en cuanto aparece GROUP BY, HAVING o una función de columna.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X