Anda di halaman 1dari 28

select avanzado

Ing. Ivan Crispn Snchez

Indicaciones
Desarrollar los ejercicios de repaso (4) Revisin del marco terico de cada tipo (alumno busca informacin) y desarrollar los ejercicios:
1. 2. 3. 4. 5. 6. Funciones de agregacin (4) Group by (3) Having (3) Order by (3) In Between (2) Union tablas (2)

select
select [all | distinct] column1[,column2] from table1[,table2] [where conditions] [group by column-list] [having conditions] [order by column-list [asc | desc] ]; Por defecto es ALL. DISTINCT descarta registros duplicados para las columnas que se especifiquen Ejemplo:
SELECT DISTINCT edad FROM empinfo; devuelve las edades nicas de la tabla

Tablas para ejercicios


pedidos clientes
clienteid nombre 10101 Juan 10298 Leandro 10299 Ernesto 10315 Luca 10325 Brbara 10329 Carmen 10330 Sancho 10338 Miguel 10339 Antonio 10408 Enrique 10410 Mara Antonia 10413 Eduardo 10419 Linda 10429 Sara 10438 Clemente 10439 Conrado 10449 Isabel apellido Garca Boada Calvo Jurez Surez Mendoza Aragn Hernndez Snchez Clavel Hernndez Aznar Sevilla Garca Garca Martn Martn ciudad Lugo Palencia Santander Oviedo Pontevedra Calatayud Cuenca Teruel Pinto Ganda Cuenca Madrid Villalba Sevilla Durango Bilbao Madrid provincia Lugo Palencia Santander Oviedo Pontevedra Zaragoza Cuenca Teruel Madrid Valencia Cuenca Madrid Madrid Sevilla Vizcaya Vizcaya Madrid
clienteid 10330 10101 10298 10101 10299 10339 10449 10439 10101 10449 10439 10298 10410 10438 10298 10449 10101 10330 10101 10299 10438 10413 10410 10315 10449 10101 10298 10449 10298 10330 fecha 30-jun-1999 30-jun-1999 1-jul-1999 1-jul-1999 6-jul-1999 27-jul-1999 13-ago-1999 14-ago-1999 18-ago-1999 1-sep-1999 18-sep-1999 19-sep-1999 28-oct-1999 2-nov-1999 1-dic-1999 15-dic-1999 30-dic-1999 1-ene-2000 2-ene-2000 18-ene-2000 18-ene-2000 19-ene-2000 30-ene-2000 2-feb-2000 29-feb-2000 8-mar-2000 18-mar-2000 19-mar-2000 1-abr-2000 19-abr-2000 item Palo de golf Balsa Monopatn Chaleco salvavidas Paracadas Paraguas Monociclo Palos de esqu Impermeable Botas para nieve Tienda Linterna Saco de dormir Almohada Casco Bicicleta Hoola Hoop Linterna flash Linterna Colchn hinchable Tienda Tumbona Monociclo Comps Linterna flash Saco de dormir Navaja Remo Orejeras Pala cantidad 1 1 1 4 1 1 1 2 1 1 1 2 1 1 1 1 3 4 1 1 1 4 1 1 1 2 1 2 1 1 precio 28.00 58.00 33.00 125.00 1250.00 4.50 180.79 25.50 18.30 45.00 88.00 29.00 89.22 8.50 22.00 380.50 14.75 28.00 16.00 38.00 79.99 32.00 192.50 8.00 4.50 88.70 22.38 40.00 12.50 16.75

Ejercicios de repaso
1. De la tabla pedidos, selecciona una lista de todos los items comprados por el clienteid 10449. Muestra el clienteid, item, y precio 2. Selecciona todas las columnas de la tabla pedidos para cualquiera que haya comprado una Tienda 3. Selecciona el clienteid, fecha e item de la tabla pedidos para cualquier item que empiece por la letra P 4. Selecciona items distintos de la tabla pedidos. 5. Realiza tus propias rdenes select y ejectalas

Funciones de agregacin
Devuelven informacin de una columna

MIN: valor ms pequeo de una columna MAX: valor ms grande de una columna SUM: suma de los valores numricos de una columna AVG: media de una columna COUNT: nmero total de valores de una columna COUNT(*): nmero de filas de una tabla

Ejemplos: Funciones agregacin


select avg(salario) from empleado select avg(salario) from empleado where categoria=Programador select count(*) from empleado

Ejercicios N 1
1. Selecciona el precio mximo de cualquier item de la tabla pedidos. 2. Selecciona el precio medio de los items que fueron comprados en el mes de diciembre 3. Cual es el nmero total de filas de la tabla pedidos? 4. Para todas las tiendas de la tabla pedidos, cual es el precio de la ms barata?

Ejercicios N 1
5. Escribe una consulta usando una unin para determinar qu items fueron pedidos por cada cliente de la tabla clientes. Selecciona el clienteid, nombre, apellido, fecha de pedido, item, y precio de todo lo que compr cada cliente en la tabla pedidos. 6. Repite lo anterior mostrando los resultados ordenados por provincia en orden descendente

Clusula GROUP BY
La clusula GROUP BY rene todas las filas que contienen datos en las columnas especificadas y permite ejecutar funciones de agregacin en una o ms columnas Formato ejemplo:
select column1,SUM(column2) from list-of-tables group by column-list

Ejemplo:

Lista de los salarios ms altos de cada departamento


SELECT dept, max(salario) FROM empleados GROUP BY dept La salida sern los salarios y los departamentos correspondientes
Otro Ejemplo:

SELECT cantidad, max(precio) FROM pedidos GROUP BY cantidad;

Agrupando registros
Select Proveedor, Count(codProd) As Productos, Sum(precio*stock) As Monto From Productos Group by Proveedor Proveedor M & H s.a. Zeta Import s.a. Diaz Hnos. s.a. S & S s.a. K & B s.a. Productos Monto 3 1 1 1 1 22205.00 7500.00 4200.00 300.00 4500.00

EJERCICIOS

EJERCICIOS

Ejercicios N 2
1. Cuntas personas hay de cada provincia en la tabla clientes? Muestra las provincias junto con el nmero de personas en cada uno. 2. De la tabla pedidos, selecciona el item, precio mximo, y precio mnimo para cada item 3. Cuntos pedidos hizo cada cliente? Usa la tabla pedidos. Selecciona el clienteid, nmero de pedidos que hicieron, y la suma de sus pedidos

Clusula HAVING
Permite especificar condiciones para las filas de cada grupo. Va despus de GROUP BY Formato:
SELECT column1, SUM(column2) FROM "list-of-tables GROUP BY "column-list" HAVING "condition"; Ejemplo:
SELECT dept, avg(salario) FROM empleados GROUP BY dept HAVING avg(salario) > 20000;

Filtrar registros agrupados


Select Proveedor, Count(codProd) As Productos, Sum(precio*stock) As Monto From Productos Group by Proveedor Having Sum(precio*stock) > 5000 Proveedor M & H s.a. Zeta Import s.a. Productos Monto 3 1 22205.00 7500.00

EJERCICIOS

Ejercicios N 3
1. Cuntas personas hay en cada provincia en la tabla clientes que tienen ms de una persona en la provincia? 2. De la tabla pedidos, selecciona el item, precio mximo, y precio mnimo para cada item de la tabla. Muestra slo los resultados si el precio mximo del item es mayor que 190 3. Cuntos pedidos hizo cada cliente? Usa la tabla pedidos. Selecciona el clienteid, nmero de pedidos que hicieron, y la suma de sus pedidos si compraron ms de 1 item

Clusula ORDER BY
Permite ordenar los resultados de una consulta, ordenados por las columnas que se especifique Por defecto es orden ascendente (ASC) Formato:
SELECT column1, SUM(column2) FROM "list-of-tables ORDER BY "column-list" [ASC | DESC]; Ejemplo:

SELECT empleado_id, dept, nombre, edad, salario FROM empleados WHERE dept = Ventas' ORDER BY salario; SELECT empleado_id, dept, nombre, edad, salario FROM empleados WHERE dept = 'Ventas' ORDER BY salario, edad DESC;

Ejercicios N 4
1. Selecciona el apellido, nombre y ciudad de todos los clientes de la tabla clientes. Muestra los resultados en orden ascendente basado en el apellido. 2. Lo mismo, pero en orden descendente. 3. Selecciona el item y precio para cada uno de los items de la tabla pedidos en los que el precio sea mayor que 10. Muestra los resultados en orden ascendente basado en el precio

Ejercicios de repaso (combinando condiciones) 1. Selecciona el clienteid, fecha de pedido, e item de la tabla pedidos para todos los items excepto si son Botas para nieve o Orejeras. Muestra dichas filas. 2. Selecciona el item y el precio de todos los items que empiecen por las letras S, 'P', o L'

Operador condicional IN
El operador IN se utiliza para comprobar si un valor est contenido en una lista de valores Formato:
SELECT column1, SUM(column2) FROM "list-of-tables WHERE column3 IN (list-of-values); Ejemplo: SELECT empleadoid, apellido, salario FROM empleados WHERE apellido IN ('Hernandez', Jurez', Gonzlez', 'Ruiz');
Se podra haber escrito con varios OR. Sera equivalente

Se puede utilizar NOT IN para excluir filas

Operador condicional BETWEEN


Se utiliza para comprobar si un valor est comprendido entre dos valores Formato:
SELECT column1, SUM(column2) FROM "list-of-tables WHERE column3 BETWEEN value1 AND value2; Ejemplo:
SELECT empleadoid, edad, apellido, salario FROM empleados WHERE edad BETWEEN 30 AND 40; Se podra haber utilizado tambin <= y >=. Sera equivalente

Tambin se puede utilizar NOT BETWEEN para excluir valores dentro de un rango

Ejercicios N 5
1. Selecciona la fecha, item, y precio de la tabla pedidos para todas las filas que tengan un precio entre 10 y 80 2. Selecciona el nombre, ciudad, y provincia de la tabla clientes para todas las filas donde la provincia sea: Madrid, Vizcaya, Valencia, Palencia, o Zaragoza

Funciones matemticas
El estndar ANSI SQL-92 soporta los siguientes operadores:
+, -, *, /, % (mdulo)

Realmente, el operador mdulo no est en el estndar, pero tanto l como las de la tabla suelen estar incluidas en la mayora de los gestores de bases de datos Ejemplo:

SELECT round(salario), nombre FROM empleados


Ejercicio:
1. Selecciona el item y el precio por unidad para cada item de la tabla pedidos

JOIN vs UNION
JOIN

UNION

CONSULTA DE UNIN
Requisitos: deben de tener igual estructura las dos tablas La consulta unin sirven para ver en un nico campo los datos de igual tipo de varias tablas.

SELECT [CAMPO1], [CAMPO2] FROM [TABLA1] UNION SELECT [CAMPO1], [CAMPO2] FROM [TABLA2];
La TABLA1 y la TABLA2 deben de tener el mismo nmero de campos. El resultado es que devuelve en una misma columna el resultado de las dos tablas. Los registros duplicados se eliminan. Si no se quiere que se eliminen se escribe UNION ALL

Ejercicios N 6
1. Selecciona la fecha, item, y precio de la tabla pedidos para todas las filas que tengan un precio entre 10 y 80 y unirlo con un consulta idem que las fechas sean del 3 trimestre. 2. Selecciona el nombre, ciudad, y provincia de la tabla clientes para todas las filas donde la provincia sea: Madrid, Valencia y Sevilla; y unirlo con una consulta idem que la ciudad sea de Bilbao y Oviedo.

Anda mungkin juga menyukai