Logo Studenta

5-Subqueries y Agregaciones - Yuliana Ruiz Borrayo

¡Este material tiene más páginas!

Vista previa del material en texto

Programación y administración 
de la información.
Subqueries y Agregaciones
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 1
Resumen de la clase pasada
SQL:
•Dudas Clase Pasada
•Dudas Tarea 2
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 2
La clase de hoy:
Manipulación de datos en SQL (Continuación)
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 3
Resumen de la clase pasada
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 4
SELECT atributos
FROM relaciones
JOIN relaciones
ON condiciones de intersección
WHERE condiciones - selecciones
Consultas Anidadas
Que pasa si queremos hacer una consulta en que las 
condiciones también sean una consulta?
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 5
Consultas Anidadas
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 6
SELECT bandas.nombre
FROM bandas, estudiantes_uandes
WHERE bandas.vocalista=estudiantes_uandes.nombre
AND banda.nombre =
(SELECT festivales.banda
FROM festivales
WHERE festivales.nombre=‘Lollapalooza’)
Consultas Anidadas
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 7
Consultas Anidadas
Que pasa si la subconsulta retorna más de un resultado?
(Esto aplica para listas en las consultas también)
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 8
Operador IN
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 9
SELECT bandas.nombre
FROM bandas, estudiantes_uandes
WHERE bandas.vocalista=estudiantes_uandes.nombre
AND banda.nombre IN
(SELECT festivales.banda
FROM festivales
WHERE festivales.nombre=‘Lollapalooza’)
Aplanando Consultas Anidadas
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 10
SELECT bandas.nombre
FROM bandas, estudiantes_uandes, festivales
WHERE bandas.vocalista=estudiantes_uandes.nombre
AND banda.nombre = festivales.banda
AND festivales.nombre=‘Lollapalooza’
Consultas Anidadas - ALL
El operador ALL retorna verdadero si todos los valores de la 
subconsulta cumplen la condición.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 11
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 12
marca producto precio cantidad
Austral Lager 1500 30
Austral Calafate 2000 20
Escudo Silver 500 21
Austral Lager 1800 10
Cristal Lager 700 30
cervezas
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 13
EJ: Cervezas más baratas que la Austral Lager
SELECT c.nombre
FROM cervezas c
WHERE c.precio < ALL
(SELECT chelas.precio
FROM cervezas chelas
WHERE chelas.nombre=‘Austral Lager’)
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 14
EJ: Cervezas más baratas que la Austral Lager
SELECT c.nombre
FROM cervezas c
WHERE c.precio < ALL
(SELECT chelas.precio
FROM cervezas chelas
WHERE chelas.nombre=‘Austral Lager’)
marca producto precio cantidad
Austral Lager 1500 30
Austral Lager 1800 10
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 15
marca producto precio cantidad
Escudo Silver 500 21
Cristal Lager 700 30
cervezas
¿Por qué no me devuelve la Austral Lager de $1500?
Consultas Anidadas - ANY
El operador ANY retorna verdadero si cualquiera de los 
valores de la subconsulta cumplen la condición.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 16
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 17
EJ: Cerveza que no sea la más cara.
SELECT c.nombre
FROM cervezas c
WHERE c.precio < ANY
(SELECT chelas.precio
FROM cervezas chelas)
Consultas Anidadas - ALL
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 18
marca producto precio cantidad
Austral Lager 1500 30
Austral Calafate 2000 20
Escudo Silver 500 21
Austral Lager 1800 10
Cristal Lager 700 30
cervezas
Consultas Anidadas Correlacionadas
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 19
Peliculas(titulo,año,director,actor)
EJ: Títulos que se repiten en años diferentes.
SELECT titulo
FROM peliculas x
WHERE año <> ANY
(SELECT año
FROM peliculas
WHERE titulo=x.titulo)
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 20
Autos
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 21
SELECT AVG(precio)
FROM autos
WHERE fabricante = ’Toyota’
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 22
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 23
Agregación
SUM, MIN, MAX, AVG aplican a un solo atributo.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 24
Operaciones aritméticas
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 25
SELECT SUM(precio*cantidad)
FROM compra
WHERE producto = ’tomate’
Compra(producto, fecha, precio, cantidad)
COUNT
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 26
SELECT COUNT(*)
FROM autos
WHERE año > 2012
COUNT
Cuenta las tuplas de una tabla
Cuenta los duplicados también
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 27
SELECT COUNT(fabricante)
FROM autos
WHERE año > 2012
COUNT
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 28
COUNT
Que pasa si queremos contar los fabricantes?
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 29
SELECT COUNT(DISTINCT fabricante)
FROM autos
WHERE año > 2012
COUNT
Que pasa si queremos contar los fabricantes?
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 30
COUNT
Que pasa si queremos contar cuantos productos tiene cada 
fabricante?
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 31
GROUP BY
•El comando GROUP BY realiza agrupaciones de los 
atributos iguales.
•A estas agrupaciones después se les pueden aplicar 
agregaciones independientes.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 32
GROUP BY
1. Primero computetodos los resultados del FROM y el 
WHERE.
2. Agrupe todos los atributos según el GROUP BY.
3. Aplique agregación independiente para cada grupo.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 33
SELECT fabricante, COUNT(*)
FROM autos
WHERE año > 2012
GROUP BY fabricante
GROUP BY
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 34
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 35
fecha marca producto precio cantidad
07/02 Austral Lager 1500 30
05/02 Austral Calafate 2000 20
05/02 Austral Lager 1700 21
03/02 Austral Calafate 1800 10
Venta
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 36
SELECT producto, SUM(precio*cantidad) AS Venta_total
FROM venta
WHERE fecha >= ‘05-02’
GROUP BY producto
Agregación
Esta debe de ser una de las consultas más realizadas en una 
base de datos.
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 37
1. Primero se computan los resultados del WHERE y el FROM
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 38
SELECT producto, SUM(precio*cantidad) AS Venta_total
FROM venta
WHERE fecha >= ‘05-02’
GROUP BY producto
fecha marca producto precio cantidad
07/02 Austral Lager 1500 30
05/02 Austral Calafate 2000 20
05/02 Austral Lager 1700 21
03/02 Austral Calafate 1800 10
2. Agrupar según GROUP BY
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 39
SELECT producto, SUM(precio*cantidad) AS Venta_total
FROM venta
WHERE fecha >= ‘05-02’
GROUP BY producto
fecha marca producto precio cantidad
07/02 Austral
Lager
1500 30
05/02 Austral 1700 21
05/02 Austral Calafate 2000 20
3. Se aplica agregación independiente para cada grupo.
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 40
SELECT producto, SUM(precio*cantidad) AS Venta_total
FROM venta
WHERE fecha >= ‘05-02’
GROUP BY producto
producto Venta_total
Lager
1500*30
1700*21
Calafate 2000*20
3. Se aplica agregación independiente para cada grupo.
Agregación
Programación y administración de la información – Universidad de los Andes – Facultad de Ciencias Económicas y Empresariales 41
SELECT producto, SUM(precio*cantidad) AS Venta_total
FROM venta
WHERE fecha >= ‘05-02’
GROUP BY producto
producto Venta_total
Lager 1500*30+1700*21
Calafate 2000*20

Continuar navegando

Materiales relacionados

48 pag.
1-Intro - Yuliana Ruiz Borrayo

User badge image

Desafio PASSEI DIRETO

38 pag.
6-SQL4 - Yuliana Ruiz Borrayo

User badge image

Desafio PASSEI DIRETO

25 pag.
7-Python - Yuliana Ruiz Borrayo

User badge image

Desafio PASSEI DIRETO

41 pag.
5-SQL3 - Yuliana Ruiz Borrayo

User badge image

Desafio PASSEI DIRETO