You are on page 1of 17

UNIVERSIDAD PUBLICA DE EL ALTO

INGENIERIA DE SISTEMAS

SEMESTRE I-2015

FUNCIONES DE GRUPO
CONSULTAS Y SUBCONSULTAS

El Alto, Marzo 2015


By fac

SQL
Agregado de datos utilizando funciones de grupo
Funciones de grupo se diferencian de funciones de una sola fila en cmo
las mismas son evaluadas. Funciones de una sola fila son evaluadas una
vez por cada recuperada. Funciones de grupo son evaluadas sobre grupos
de una o ms filas a la vez.
Descripcin de las funciones de grupo
En contraste con las funciones a nivel de fila, las funciones de grupo
operan sobre conjuntos de filas para devolver un resultado por cada uno
de ellos. Dichos grupos pueden estar constituidos por la tabla entera o por
partes de la misma.
Cada una de las funciones de grupo acepta un argumento. Algunas de las
funciones de grupo disponibles se muestran en la figura

SQL

SQL
Sintaxis de las funciones de grupo

A continuacin se muestran tres ejemplos de la utilizacin de las


funciones de grupo.

SQL
La clusula GROUP BY
Si se usa la clusula GROUP BY en una sentencia SELECT, Oracle divide las
filas de una tabla o vista consultada en grupos. Oracle aplica las funciones
de grupo en la lista SELECT a cada grupo de filas y retorna una nica fila
resultado para cada grupo. Si se omite la clusula GROUP BY, el motor
aplica las funciones de grupo en la lista SELECT a todas las filas en la
tabla o vista consultada.

Reglas

En una consulta que contiene una clusula GROUP BY, todos los
elementos de la lista SELECT deben ser expresiones de la clusula GROUP
BY, expresiones que contienen funciones de grupo o constantes. Si hay
fallas en la inclusin de columna, aparecer un mensaje de error.

SQL
Con el uso de la clusula WHERE se pueden excluir filas antes de la
divisin en grupos.
No se puede usar la notacin de posicin o el alias de columna en la
clusula GROUP BY.
Por defecto, las filas se ordenan en forma ascendente de acuerdo a la lista
GROUP BY.
Esto se puede modificar haciendo uso de la clusula ORDER BY.

SQL
Agrupacin por ms de una columna
Se pueden devolver resultados resumen para grupos y subgrupos
incluyendo ms de una columna en la clusula GROUP BY. El orden en el
cual se listan las columnas en la clusula GROUP BY determina la forma
de ordenamiento por defecto.

La clusula HAVING
La clusula HAVING se usa para restringir cules grupos de filas, definidas
por la clusula GROUP BY, son retornadas por la consulta. Server procesa
las clusulas WHERE, GROUP BY y HAVING de la siguiente manera:
Si la sentencia contiene una clusula WHERE, Oracle remueve todas las
filas que no la satisfacen.

SQL
Oracle calcula y da formato a los grupos como se especifica en la
clusula GROUP BY.
Oracle remueve todos los grupos que no satisfacen la clusula HAVING.
Se deben especificar las clusulas GROUP BY y HAVING despus de la
clusula WHERE. Si se especifican ambas clusulas (GROUP BY y
HAVING), ellas pueden aparecer en cualquier orden.
Las funciones de grupo pueden aparecer en la lista de la clusula SELECT
y en la clusula HAVING.

SQL
Ejemplos

SQL
Consultas y Subconsultas
En SQL, la sentencia SELECT permite escribir una consulta o
requerimiento de acceso a datos almacenados en una base de datos
relacional. Dichas consultas SQL van desde una operacin simple al
mostrar datos desde una nica tabla, hasta operaciones complejas que
involucran la unin de varias tablas, expresiones compuestas para
restringir las filas resultantes, etc.
Cuando una consulta posee cierto grado de complejidad es til dividirla en
partes, lo cual brinda mayor flexibilidad en el reuso de partes y mejor
legibilidad de la consulta como un todo. Subconsultas se utilizan para
dividir una consulta en varias partes. Una subconsulta es una consulta en
s misma que posee existencia dentro de una consulta de nivel superior.
Dicho mecanismo de subconsultas puede utilizarse en cualquier sentencia
DML.

SQL
Descripcin de las consultas.Una subconsulta es una sentencia SELECT que est incluida en una
clusula de otra sentencia SQL. Se pueden construir comandos simples y
potentes usando subconsultas. Pueden ser muy tiles cuando se necesita
seleccionar filas de una tabla con una condicin que depende de los datos
que estn en la misma tabla o en alguna otra.
Se puede poner la subconsulta en algunas de las siguientes clusulas de
un comando SQL:
Clusula WHERE.
Clusula HAVING.
Clusula FROM de una sentencia SELECT o DELETE (este tema se
desarrollar mas adelante).
Frecuentemente se refiere a una subconsulta como un SELECT anidado,
un sub-SELECT, o una sentencia SELECT interna.
A continuacin se tiene la SINTAXIS:

SQL

Orden de Procesamiento de las Subconsultas Anidadas


Primero se ejecuta la subconsulta (SELECT anidado) y su resultado se
pasa para completar la condicin de la consulta principal, o externa. Ej.

SQL
Subconsultas de una sola fila
Una subconsulta de filas simples devuelve una sola fila desde la sentencia
SELECT anidada. Este tipo de subconsulta utiliza un operador de fila
simple.
El ejemplo anterior, contiene una subconsulta de filas simples, ya que
devuelve un solo valor: el nmero del departamento en la cual trabaja
Vargas.
Se pueden mostrar los datos resultantes de una consulta principal usando
una funcin de grupo en una subconsulta para devolver una fila simple.

SQL
Un error comn es que una subconsulta de fila simple d como resultado
ms de una fila.

Subconsultas de varias filas


Las subconsultas que devuelven ms de una fila se denominan
subconsultas de filas mltiples. Se debe usar un operador de filas
mltiples, tal como IN, en lugar de un operador de fila simple. Este
operador espera uno o ms valores.

SQL

Operadores de Filas Mltiples


Adems del operador IN, SQL ofrece los operadores que se detallan a
continuacin para escribir condiciones de bsqueda en subconsultas que
devuelven ms de una fila

SQL
Subconsultas en la clusula HAVING.
Adems de la clusula WHERE, las subconsultas tambin se pueden usar
en la clusula HAVING. Primero se ejecuta la subconsulta y el resultado es
devuelto a la clusula HAVING de la consulta principal.

SQL
Ejercicios de subconsultas de una fila

Ejercicios de subconsultas de varias filas

You might also like