Descarga la aplicación para disfrutar aún más
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
Compartir