Você está na página 1de 4

Universidad Nacional de Trujillo Ingeniera de Sistemas

CONSULTAS SQL PARTE II

-- Consultando filas nicas: Mostrar las ciudades de procedencia de los empleados


select distinct emplciudad as 'Ciudad de procedencia' from empleado;

-- Operador XOR: Mostrar los clientes cuyo apellido paterno es Flores o que su apellido materno es
-- Castillo, pero no ambos.
select cliecodigo as Codigo, cliepaterno as 'Apellido paterno', cliematerno as 'Apellido materno',
clienombre as Nombre from cliente where cliepaterno = 'Flores' xor cliematerno = 'Castillo';

-- Limitando el nmero de filas:


-- Mostrar los ltimos 5 movimientos de la cuenta 00200001
select movinumero as 'Nmero', movifecha as 'Fecha', tipocodigo as 'Cdigo de operacin',
moviimporte as 'Importe' from movimiento where cuencodigo = '00200001' order by 1 desc limit 5;

-- Mostrar el penltimo movimiento de la cuenta 00200001


select movinumero as 'Nmero', movifecha as 'Fecha', tipocodigo as 'Cdigo de operacin',
moviimporte as 'Importe' from movimiento where cuencodigo = '00200001' order by 1 desc limit 1,1;

-- Funciones de control de flujo:


-- Mostrar el cdigo y la ciudad de las sucursales. Si la sucursal est ubicada fuera de Lima indicar que
-- es 'Provincia'
select sucucodigo as Cdigo, sucuciudad as Ciudad,
case sucuciudad
when 'Lima' then 'Lima'
else 'Provincia'
end
as 'Ubicacin' from sucursal;

-- Mostrar el cdigo y la ciudad de las sucursales. Sealar como ubicacin de la sucursal el trmino
-- 'Principal' si est ubicada en Lima o 'Provincia' en caso contrario
select sucucodigo as Cdigo, sucuciudad as Ciudad,
case sucuciudad
when 'Lima' then 'Principal'
else 'Provincia'
end
as 'Ubicacin' from sucursal;

-- Mostrar el saldo de las cuentas calificndolos de la siguiente forma: De [0 a 2500>, Bajo; de [2500 a
-- 5000>, Regular; de [5000 a 10000>, Bueno; de [10000 a 15000>, Muy bueno y mas de 15000,
--- Excelente
select cuencodigo as Cdigo, cuensaldo as Saldo,
case
when cuensaldo < 2500 then 'Bajo'
when cuensaldo < 5000 then 'Regular'
when cuensaldo < 10000 then 'Bueno'
when cuensaldo < 15000 then 'Muy bueno'
else 'Excelente'
end as Calificacin
from cuenta;
Docente: Mg. Ing. Zoraida Yanet Vidal Melgarejo. Tema: Consultas SQL Parte II
Curso: Tecnologa de la Programacin II Pgina: - 1 -
Universidad Nacional de Trujillo Ingeniera de Sistemas

-- Mostrar la lista de todos los empleados indicando si est activo o ha sido dado de baja
select emplcodigo as 'Cdigo de empleado', sucucodigo as 'Cdigo de Sucursal',
if(asigfechabaja is null, 'Activo', 'Baja') as 'Estado' from asignado;

-- Funciones de cadena: Mostrar el cdigo y la identificacin del cliente (nombre, apellido paterno y
-- apellido materno como una sola columna)
select cliecodigo as 'Cdigo', concat(clienombre, space(1), cliepaterno, space(1), cliematerno) as
Identificacin from cliente;

-- Funciones de fecha: Agregar un da a la fecha actual


select curdate() as Hoy, adddate(curdate(),1) as Maana;

-- Agregar un ao a la fecha actual


select curdate() as Hoy, adddate(curdate(),interval 1 year) as 'Siguiente ao';

-- Mostrar fecha y hora actual del sistema


select curdate() as 'Fecha', curtime() as Hora;
select now() as 'Fecha y hora';
select localtime as 'Fecha y hora';

-- Diferencia de das entre dos fechas


select datediff(curdate(), '2016-04-01') as 'Das en clase';

-- Agregar das a una fecha


select date_add(curdate(), interval 5 day) as 'Dentro de 5 das';

-- Restar das a una fecha


select date_sub(curdate(), interval 5 day) as 'Hace 5 das';

-- Fechas con formato


select date_format(sysdate(), '%y-%m-%d') as 'Fecha: aa-mm-dd';
select date_format(sysdate(), '%d %M %Y') as 'Fecha: dd mes aaaa';
select date_format(sysdate(), '%d %M %Y %r') as 'Fecha: dd mes aaaa AM/PM';

-- Extraer parte de una fecha


select curdate() as 'Fecha de hoy', extract(year from curdate()) as Ao;
select curdate() as 'Fecha de hoy', extract(month from curdate()) as Mes;
select curdate() as 'Fecha de hoy', extract(day from curdate()) as Dia;

-- Consultas: Cantidad de empleados activos en la sucursal 002


select count(*) as Empleados from asignado where sucucodigo = '002' and asigfechabaja is null;

-- Cantidad de empleados dados de baja


select count(asigfechabaja) as 'Empleados dados de baja' from asignado;
select count(*) as 'Empleados dados de baja' from asignado where asigfechabaja is not null;

-- Cantidad de sucursales que tienen por lo menos una cuenta


select count(distinct sucucodigo) as 'Sucursales con al menos 1 cuenta' from cuenta;

Docente: Mg. Ing. Zoraida Yanet Vidal Melgarejo. Tema: Consultas SQL Parte II
Curso: Tecnologa de la Programacin II Pgina: - 2 -
Universidad Nacional de Trujillo Ingeniera de Sistemas

-- Mostrar la cantidad de empleados por sucursal


select sucucodigo as 'Cdigo de sucursal', count(*) as Empleados from asignado where asigfechabaja
is null group by sucucodigo;

-- Mostrar la cantidad de movimientos registrados por cada empleado


select emplcodigo as 'Cdigo de empleado', count(*) as 'Cantidad de Movimientos' from movimiento
group by 1;

-- Mostrar el monto de depsito en cada mes del ao 2008


select month(movifecha) as Mes, sum(moviimporte) as 'Monto depositado' from movimiento where
year(movifecha) = 2008 and tipocodigo = '003' group by 1;

-- Mostrar los meses del 2008 en los que los depsitos fueron superiores a 20000
select month(movifecha) as Mes, sum(moviimporte) as 'Monto depositado' from movimiento where
year(movifecha) = 2008 and tipocodigo = '003' group by 1 having sum(moviimporte) > 20000;

-- Mostrar las sucursales que tienen asignado slo 1 empleado


select sucucodigo as 'Cdigo de sucursal', count(*) as 'Nmero de empleados' from asignado where
asigfechabaja is null group by 1 having count(*) = 1;

-- Consultas multitablas:
-- Mostrar un listado de las cuentas, sus respectivos saldos y la sucursal a la que pertenece
select sucursal.sucunombre as 'Nombre de sucursal', cuenta.cuencodigo as 'Cdigo de cuenta',
cuenta.cuensaldo as 'Saldo en cuenta' from sucursal, cuenta where sucursal.sucucodigo =
cuenta.sucucodigo;

-- Mostrar las cuentas de la sucursal 002, su saldo y el nombre del empleado que la cre
select cuenta.cuencodigo as 'Cdigo de cuenta', cuenta.cuensaldo as 'Saldo',
concat(empleado.emplnombre, space(1), empleado.emplpaterno) as 'Creada por' from empleado,
cuenta where empleado.emplcodigo = cuenta.emplcreacuenta and (cuenta.sucucodigo = '002');

-- Mostrar las cuentas, su saldo respectivo y el cliente al que pertenece


select cu.cuencodigo as 'Cdigo de cuenta', cu.cuensaldo as Saldo, concat(cl.clienombre, space(1),
cl.cliepaterno) as 'Pertenece a:' from cliente as cl, cuenta as cu where cl.cliecodigo = cu.cliecodigo;

-- Trabajando con datos:


-- Insertar un nuevo registro
insert into sucursal values('123', 'Pacherrez', 'Chiclayo', 'Av. Bolognesi 234', 0);

insert into empleado values('4321', 'Salazar', 'Castro', 'Sara', 'Chiclayo', 'Calle Casinelli 654', 'ssalazar',
'diva');

insert into asignado(asigcodigo, sucucodigo, emplcodigo, asigfechaalta) values('345678', '123', '4321',


'2016-04-29');

Docente: Mg. Ing. Zoraida Yanet Vidal Melgarejo. Tema: Consultas SQL Parte II
Curso: Tecnologa de la Programacin II Pgina: - 3 -
Universidad Nacional de Trujillo Ingeniera de Sistemas

-- Insertando varios registros


insert into sucursal values
('880', 'Sucursal 880', 'Lima', 'Lima', 0),
('881', 'Sucursal 881', 'Lima', 'Lima', 0),
('882', 'Sucursal 882', 'Lima', 'Lima', 0),
('883', 'Sucursal 883', 'Lima', 'Lima', 0),
('884', 'Sucursal 884', 'Lima', 'Lima', 0);

-- Actualizar el valor del costo por movimiento incrementndolo en 10%


update costomovimiento set costimporte = costimporte * 1.10;

-- Incrementar el saldo de las cuentas en moneda nacional. El monto del incremento es igual al 10%
-- del saldo de la cuenta coy mayor saldo.
select cuencodigo, monecodigo, cuensaldo from cuenta where monecodigo='01';
select @saldo_mayor := max(cuensaldo) from cuenta where monecodigo = '01';
update cuenta set cuensaldo = cuensaldo + @saldo_mayor * 0.10
where monecodigo = '01';
select cuencodigo, monecodigo, cuensaldo from cuenta where monecodigo='01';

-- Eliminar fila de una tabla


select * from sucursal;
delete from sucursal where sucucodigo = '884';
select * from sucursal;

Docente: Mg. Ing. Zoraida Yanet Vidal Melgarejo. Tema: Consultas SQL Parte II
Curso: Tecnologa de la Programacin II Pgina: - 4 -

Você também pode gostar