SQL - script - agrupamiento
From Ibbddunq
Revision as of 20:59, 24 April 2009
Empezamos con funciones
A las funciones que vimos hasta ahora les alcanza con mirar fila por fila:
- DAY (=DAYOFMONTH) / MONTH / YEAR
- operaciones matemáticas
- IFNULL(valor1,valor que va si el valor1 es null)
- ... alguna otra que se nos ocurra
Ahora, también tenemos estas funciones
COUNT / SUM / AVG / MAX / MIN
que no se pueden evaluar para una fila sola, el MAX es el máximo de todas las filas del resultado, y así siguiendo.
P.ej.
-- cantidad de actos y duracion total de una funcion select diaFn, horaFn, max(nroOrden), sum(duracion) from formaParte where diaFn = 20080615 and horaFn = 20;
o
-- acto, grado de peligrosidad, cantidad de artistas que lo pueden hacer -- menor destreza, para el acto de los leones select nomActo, gradoPel, count(nomArt), min(destreza) from (acto natural join puedeParticipar) where nomActo = "leones";
(cómo obtener el artista de menor destreza ... para eso falta un rato)
Ahora sí, agrupamiento
Motivación, ahora quiero
- cantidad de actos y duración total de cada función, o cantidad de artistas/menor destreza de cada acto.
Para eso tendría que separar (ponele) la tabla formaParte en pedacitos, cada pedacito son las filas de una función.
Dar la visión de "tabla de agrupados", o sea, visión conceptual de tabla donde cada fila representa un grupo de filas de la tabla original. Entonces de cada grupo sí tiene sentido el count, el min, el max, etc..
Destacar la diferencia entre agrupar y seleccionar (filtrar = seleccionar).
Ahora sí, sintaxis: GROUP BY, funciones que actúan sobre agrupados.
Ejemplos: 1
-- cantidad de actos y duracion total de cada funcion select diaFn, horaFn, count(nroOrden), sum(duracion) from formaParte group by diaFn, horaFn order by diaFn, horaFn;
2
-- cantidad de actos y duracion total de cada funcion que empieza a las 20 horas select diaFn, horaFn, count(nroOrden), sum(duracion) from formaParte where horaFn = 20 group by diaFn, horaFn order by diaFn, horaFn;
HAVING
HAVING, con qué criterio poner condiciones en el HAVING o en el WHERE.