Aprendemos a agrupar elementos y a combinar filas seleccionadas con SQL para Oracle
Agrupación de elementos. Group by y Having:
Para saber cual es el salario medio de cada departamento de la tabla Jugadores sería:
SELECT EQUIPO_NO, AVG (SALARIO) "SALARIO MEDIO"
FROM JUGADORES
GROUP BY DEPT_NO;
La sentencia "Select" posibilita agrupar uno o más conjuntos de filas. El agrupamiento se lleva a cabo mediante la cláusula "GROUP BY" por las columnas especificadas y en el orden especificado. Formato:
SELECT
FROM
GROUP BY COLUMNA1, COLUMNA2, COLUMNAN
HAVING CONDICION
GROUP BY
Los datos seleccionados en la sentencia "Select" que lleva el "Group By" deben ser:
La cláusula Having se emplea para controlar cual de los conjuntos de filas se visualiza. Se evalúa sobre la tabla que devuelve el Group By. No puede existir sin Group By.
Having es similar al Where, pero trabajo con grupos de filas; pregunta por una característica de grupo, es decir, pregunta por los resultados de las funciones de grupo, lo cual Where no pude hacer.
Combinación externa (outer joins):
Nos permite seleccionar algunas filas de una tabla aunque estas no tengan correspondencia con las filas de la otra tabla con la que se combina. Formato:
SELECT TABLA1.COLUMNA1, TABLA1.COLUMNA2, TABLA2.COLUMNA1, TABLA2.COLUMNA2
FROM TABLA1, TABLA2
WHERE TABLA1.COLUMNA1 = TABLA2.COLUMNA1 (+);
Esto selecciona todas las filas de la tabla "tabla1" aunque no tengan correspondencia con las filas de la tabla "tabla2", se utiliza el símbolo +.
El resto de columnas de la tabla "tabla2" se rellena con NULL.
Union, intersec y minus:
Permite combinar los resultados de varios "Select" para obtener un único resultado. Formato:
SELECT FROM WHERE
OPERADOR_DE_CONJUNTO
SELECT FROM WHERE
UNION= Combina los resultados de dos consultas. Las filas duplicadas que aparecen se reducen a una fila única.
UNION ALL= Como la anterior pero aparecerán nombres duplicados.
INTERSEC= Devuelve las filas que son iguales en ambas consultas. Todas las filas duplicadas serán eliminadas.
MINUS= Devuelve aquellas filas que están en la primera "Select" y no están en la segunda "Select". Las filas duplicadas del primer conjunto se reducirán a una fila única antes de que empiece la comparación con el otro conjunto.
Reglas para la utilización de operadores de conjunto:
Para saber cual es el salario medio de cada departamento de la tabla Jugadores sería:
SELECT EQUIPO_NO, AVG (SALARIO) "SALARIO MEDIO"
FROM JUGADORES
GROUP BY DEPT_NO;
La sentencia "Select" posibilita agrupar uno o más conjuntos de filas. El agrupamiento se lleva a cabo mediante la cláusula "GROUP BY" por las columnas especificadas y en el orden especificado. Formato:
SELECT
FROM
GROUP BY COLUMNA1, COLUMNA2, COLUMNAN
HAVING CONDICION
GROUP BY
Los datos seleccionados en la sentencia "Select" que lleva el "Group By" deben ser:
- Una constante.
- Una función de grupo (SUM, COUNT, AVG
)
- Una columna expresada en el Group By.
La cláusula Having se emplea para controlar cual de los conjuntos de filas se visualiza. Se evalúa sobre la tabla que devuelve el Group By. No puede existir sin Group By.
Having es similar al Where, pero trabajo con grupos de filas; pregunta por una característica de grupo, es decir, pregunta por los resultados de las funciones de grupo, lo cual Where no pude hacer.
Combinación externa (outer joins):
Nos permite seleccionar algunas filas de una tabla aunque estas no tengan correspondencia con las filas de la otra tabla con la que se combina. Formato:
SELECT TABLA1.COLUMNA1, TABLA1.COLUMNA2, TABLA2.COLUMNA1, TABLA2.COLUMNA2
FROM TABLA1, TABLA2
WHERE TABLA1.COLUMNA1 = TABLA2.COLUMNA1 (+);
Esto selecciona todas las filas de la tabla "tabla1" aunque no tengan correspondencia con las filas de la tabla "tabla2", se utiliza el símbolo +.
El resto de columnas de la tabla "tabla2" se rellena con NULL.
Union, intersec y minus:
Permite combinar los resultados de varios "Select" para obtener un único resultado. Formato:
SELECT FROM WHERE
OPERADOR_DE_CONJUNTO
SELECT FROM WHERE
UNION= Combina los resultados de dos consultas. Las filas duplicadas que aparecen se reducen a una fila única.
UNION ALL= Como la anterior pero aparecerán nombres duplicados.
INTERSEC= Devuelve las filas que son iguales en ambas consultas. Todas las filas duplicadas serán eliminadas.
MINUS= Devuelve aquellas filas que están en la primera "Select" y no están en la segunda "Select". Las filas duplicadas del primer conjunto se reducirán a una fila única antes de que empiece la comparación con el otro conjunto.
Reglas para la utilización de operadores de conjunto:
- Las columnas de las dos consultas se relacionan en orden, de izquierda a derecha.
- Los nombres de columna de la primera sentencia "Select" no tiene porque ser los mismos que los nombres de la segunda.
- Los "Select" necesitan tener el mismo numero de columnas.
- Los tipos de datos deben coincidir, aunque la longitud no tiene que ser la misma.
Agustin Jareño