Upload
matias-franco
View
11
Download
3
Embed Size (px)
Citation preview
SQL
SELECT – FROM – WHERE
J.Pastorino
Sub Querys Funciones de Agregación
2
Subconsultas anidadas
A través de subconsultas se pueden realizar consultas de:
(no) pertenencia a un conjunto = (NOT) INComparación de conjuntos
con al menos uno = {<,>} SAME,para todos = {<,>} ALL
Conjunto no vacío = EXISTS
Conjunto vacío = NOT EXISTS
3
Ejemplo
Sucursal(Nombre-suc, ciudad-suc, activo)
Cuenta(nombre-suc,nro-cta,saldo)
Datos-cliente(nombre-cli,nro-cli,direccion-cli)
Prestamo(nombre-suc,nro-prestamo,importe)
Prestatario(nro-cli,nro-prestamo)
Cliente-cta(nro-cli,nro-cta)4
Subconsultas anidadas
Select * From Cliente-Cta Where nro-Cli NOT IN (Select nro-cli
From Prestatario)
Listado de clientes a los que se les otorgóprestamos
5
Subconsultas anidadas
Select * From Prestamo Where Importe >= All (Select importe
From Prestamo)
Listado de prestamos que tienen el mayor importe
6
Subconsultas anidadas
Select * From Cliente-Cta CCWhere Not Exists (Select 1
From Prestatario Where nro-cliente = CC.nro-cli)
Listado de clientes y sus cuentas para los clientes que no hayan solicitado prestamos.
7
Cociente
Select Nro-cli, Nombre-cliFrom Datos-Cliente DCWhere Not Exists ( Select 1
From Sucursales SWhere Not Exists ( Select 1
From Cliente-Cuenta CC, Cuenta CWhere CC.nro-cuenta=C.nro-cuenta
and C.nombre-suc= S.nombre-sucand CC.nro-cli = DC.nro-cli)
)
Listado de Clientes que tienen cuentas en todas las sucursales
Funciones de Agregación
Permiten realizar operaciones sobre datos agregados (o agrupados)Operaciones tales como:
PromedioSumanMínimo y MáximoCuenta
Funciones de Agregación (cont.)
Utilizan los operadores Group By y Having
Select <atributos>From <relaciones>[Where <predicado>]Group By <col1>,…,<colN>Having <predicado>
Funciones de Agregación (cont.)
Ejemplos:1)Select nro-cli, count(*)From cliente-cuentaGroup By nro-cliente2)Select nro-cli, count(*)From cliente-cuentaGroup By nro-clienteHaving count(*)>5
1)Cantidad de Cuentas para cada cliente
2)Cantidad de cuentas para aquellos clientes que tengan más de 5 cuentas.
Funciones de Agregación (cont.)
Cantidad de Cuentas por cliente y promedio de saldos, para cuentas de tala, con saldo mayor a 1000$.
Select nro-cli, count(*), avg(c.saldo)From cliente-cuenta cc, cuenta cWhere cc.nro-cuenta=c.nro-cuenta and
c.nombre-suc=‘Tala’Group By nro-clienteHaving sum(c.saldo)>1000