Ejercicios Sentencias SQL - 2012 Gestión Cliente-Orden Create Database GestionOrdenCliente Use GestionOrdenCliente Creat
Views 187 Downloads 9 File size 496KB
Ejercicios Sentencias SQL - 2012 Gestión Cliente-Orden Create Database GestionOrdenCliente Use GestionOrdenCliente Create Table Cliente( Rut int Primary Key, Nombre Varchar(20) not null ); Create Table Orden( Num_Orden int Primary Key, Monto int, Fecha varchar(10), Rut int Foreign Key References Cliente(Rut) );
Insert Into Cliente values ('11','Diaz Pedro'); Insert Into Cliente values ('22','Caro Ana'); Insert Into Cliente values ('33','Tapia Sofia'); Insert Into Orden values ('1','150','12_10_2012','11'); Insert Into Orden values ('3','175','12_10_2012','11'); Insert Into Orden values ('5','320','11_10_2012','22'); Insert Into Orden values ('7','110','12_10_2012','33'); Insert Into Orden values ('8','320','13_10_2012','11');
Mostrar Tabla Orden Select * From Orden;
Mostrar Tabla Cliente Select * From Cliente;
Mostrar listas de órdenes de compra del 12_10_2012 Select * From Orden Where Fecha= '12_10_2012';
Francisco Hernán Ramírez Fernández
Página 1
Ejercicios Sentencias SQL - 2012
Join
Mostrar listas de órdenes de compra del 12_10_2012 indicando el nombre del cliente Select C.Nombre, O.* From Orden O, Cliente C Where Fecha= '12_10_2012' and O.Rut=C.Rut;
SubConsultas
Select * From Cliente Where Rut =(Select Rut From Orden Where Fecha='12_10_2012');
Lista de los Rut con su nombre distintos en orden descendente Select Distinct Rut,Nombre From Cliente order by Rut desc;
Desplegar monto de todas las ordenes aumentado un 10% Select Monto*1.1 From Orden
Gestión Empleado Depto. Create database GestionEmpleadoDepto Use GestionEmpleadoDepto Create Table Depto( Num_Depto int Primary Key, Nombre Varchar(20) not null ); Create Table Empleado( Ci int Primary Key, Nombre varchar(20) not null, Dir varchar(5) not null, Sueldo int not null, Comision int, Num_Depto int Foreign Key References Depto(Num_Depto) );
Francisco Hernán Ramírez Fernández
Página 2
Ejercicios Sentencias SQL - 2012
Insert into Depto values('10','Ventas'); Insert into Depto values('20','Informatica'); Insert into Depto values('30','Marketing'); Insert into Empleado values('11','Diaz Pedro','D1','760','35','10'); Insert into Empleado values('33','Araneda Carolina','D3','120', null,'20'); Insert into Empleado values('55','Perez Magaly','D1','380','22','10'); Insert into Empleado values('77','Bravo Ana','D7','910',null,'30'); Insert into Empleado values('88','Soto Hector','D8','650','15','10');
SubConsultas
Join
Select E.Nombre From Empleado E, Empleado D where D.Nombre='Perez Magaly' and E.Num_Depto=D.Num_Depto;
Select Nombre From Empleado where Num_Depto in (Select Num_Depto From Empleado where Nombre='Perez Magaly');
Join
SubConsultas
Lista de todos los empleados que trabajen en el mismo departamento que Pérez Magaly
Listar todos los empleados que trabajan en el departamento de informática ordenados alfabéticamente Select E.Nombre From Empleado E, Depto D Where D.Nombre='Informatica' and E.Num_depto=D.Num_Depto Order by Nombre asc; Select Nombre From Empleado Where Num_Depto = (Select Num_Depto From Depto Where Nombre='Informatica'); Order by Nombre asc;
Francisco Hernán Ramírez Fernández
Página 3
Ejercicios Sentencias SQL - 2012
Obtener el total del dinero que se gastan en sueldos Select SUM(Sueldo) As Total_Sueldo From Empleado
Contabilizar los empleados del departamento 20 Select COUNT(Comision) From Empleado Where Comision>0;
Calcular el promedio de los sueldo de la empresa Select AVG(Sueldo) as Sueldo_Promedio From Empleado
Calcular el promedio de los sueldo de cada departamento de la empresa Select Num_Depto, AVG(Sueldo) as Sueldo_Promedio From Empleado group by Num_Depto
Contar a los empleados del departamento 10 Select COUNT(*)as Conteo From Empleado where Num_Depto=10;
Listar departamentos donde trabajen mas de 2 empleados Select Num_Depto, COUNT(ci) From Empleado Group by Num_Depto having COUNT(*)>2;
Desplegar el promedio de sueldo de todos aquellos departamentos que tienen mas de 2 empleados y ademan donde cada empleado gana mas de 500 Select AVG(Sueldo) as Sueldo, Num_Depto From Empleado Where Sueldo>500 group by Num_Depto Having COUNT(*)>=2;
Francisco Hernán Ramírez Fernández
Página 4
Ejercicios Sentencias SQL - 2012
Join
Listar empleados que solo trabajen en el departamento de Soto Héctor Select E.* From Empleado E, Empleado D Where E.Num_Depto=D.Num_Depto and D.Nombre='Soto Hector'
SubConsultas
Select * From Empleado where Num_Depto=(Select Num_Depto From Empleado Where Nombre='Soto Hector');
Join
Listar Nombre y sueldo de los empleados que trabajen en el departamento de ventas y ordenar ascendentemente por sueldos Select E.Nombre, E.Sueldo From Empleado E, Depto D Where D.Nombre='Ventas' and D.Num_Depto=E.Num_Depto Order by Sueldo;
SubConsultas
Select Nombre, Sueldo From Empleado where Num_Depto=(Select Num_Depto From Depto Where Nombre='Ventas') Order by Sueldo;
SubConsultas
Select * From Empleado Where Sueldo>(Select AVG(Sueldo) From Empleado);
SubConsultas
Listar de empleados que ganan mas del promedio de sueldo de la empresa
Listar Empleados que ganan mas que el promedio de sueldo de los empleados del departamento de ventas Select * From Empleado Where Sueldo>(Select AVG(Sueldo) From Empleado Where Num_Depto=(Select Num_Depto From Depto Where Nombre='Ventas'));
Francisco Hernán Ramírez Fernández
Página 5
Ejercicios Sentencias SQL - 2012
Lista de los empleados que tienen sueldo mayor que algún empleado del departamento 10
SubConsultas
Select * From Empleado Where Sueldo>(Select MIN(Sueldo) From Empleado Where Num_Depto='10'); Select * From Empleado Where Sueldo>Any(Select Sueldo From Empleado Where Num_Depto='10');
Lista de los empleados que tienen el Sueldo mayor que todos los empleados del departamento 10
SubConsultas
Select * From Empleado Where Sueldo>(Select Max(Sueldo) From Empleado Where Num_Depto='10'); Select * From Empleado Where Sueldo>All(Select Sueldo From Empleado Where Num_Depto='10');
Listar los nombres de todos los departamentos donde hay empleados que ganan mas de 300 y menos de 1000
SubConsultas
Select Nombre From Depto Where Num_Depto in (Select Num_Depto From Empleado Where Sueldo between 300 and 1000);
Insertamos datos a la tabla “depto” (Deben ser lo mismos de abajo). --Cuando conocemos el orden de los parametros Insert Into Depto Values ('40','Calidad') --Cuando no conocemos el orden de los parametros Insert Into Depto (Nombre,Num_Depto) Values ('Contabilidad','50')
Francisco Hernán Ramírez Fernández
Página 6
Ejercicios Sentencias SQL - 2012
SubConsultas Corr.
Lista de los empleados que tienen un sueldo mayor que el promedio de su departamento Select E.* From Empleado E Where Sueldo>(Select AVG(Sueldo) From Empleado D Where E.Num_Depto=D.Num_Depto);
SubConsultas Corr.
Encontrar departamentos que no tienen empleados Select * From Depto Where not exists (Select * From Empleado Where Empleado.Num_Depto=Depto.Num_Depto);
Listar todos los empleados que son vendedores Select * From Empleado Where Comision is not null;
Join
Select E.* From Empleado E, Depto D Where E.Num_Depto=D.Num_Depto AND D.Nombre='Ventas';
SubConsultas
Select * From Empleado Where Num_Depto= (Select Num_Depto From Depto Where Nombre='Ventas');
Listar sueldo mas comisiones de todos los empleados del depto. Ventas
Join
--Usando 1 de los 3 ejemplos anteriores Select E.Sueldo+E.Comision As SueldoTotal, E.Nombre From Empleado E, Depto D Where E.Num_Depto=D.Num_Depto AND D.Nombre='Ventas'; --NOTA: 120+null=null
Función NVL --Si Comision es nula entonces es un 0 temporal Where Nvl(Comision,0)100
Francisco Hernán Ramírez Fernández
Página 7
Ejercicios Sentencias SQL - 2012 Sentencias DML
Select Delete Insert Update
1. Select Select From [Where Group By Having Order By ] 2. Delete Delete [From] [Where ]
Borrar todas las filas de empleado Delete Empleado
SubConsultas
Borrar todos los empleados del depto. 10 Delete Empleado Where Num_Depto = 10 Delete Empleado Where Num_Depto in (Select Num_Depto From Depto Where Nombre='Ventas');
Francisco Hernán Ramírez Fernández
Página 8
Ejercicios Sentencias SQL - 2012 3. Insert Insert into [Col1,Col2…] values(’’, ’’, ’’);
Agregar Depto. 50 correspondiente a Contabilidad Insert Into Depto Values ('50','Contabilidad');
4. Update Update Set
Where ;
Modificar el sueldo de todos los empleados, aumentando en un 50% Update Empleado Set Sueldo=Sueldo*1.5
Sentencias DDL 1. Create Create Table