Buscar este blog

miércoles, 22 de mayo de 2013

EJERCICIOS I



select titulo, if(precio>50, `caro`, 'economico') from libros;
select autor, if (count(*)>1, 'mas de 1', '1') from libros group by autor;
select editorial, if (count(*)>4, '5 o mas', 'menos de 5') as cantidad from libros group by editorial order by cantidad;
select sexo count (sexo) if (sexo='f', 'rosas', 'corbata') as 'obsequio' from empleados where month (fecha nacimiento) = 5 group by sexo;
select nombre, fecha ingreso, year(current_date) year (fecha ingreso) as 'años de servicio', if ((year(current-date)-year(fechaingreso)) %10=0, 'si', 'no') as 'Placa' from empleados where month(fechaingreso)=4;
select nombre, sueldo, hijos, if (sueldo basico <=500, sueldobasico+(300*hijos), sueldobasico+(150*hijos)) as total from empleados where hijos > 0;
select dni, vencimiento, current_date as 'Fecha actual', total, if (datediff (current_date, vencimiento)>0, 'si', 'no') as vencida from luz;
select dni, count (*), if (count(*)>1, 'cortar servicio' ' ') as 'servicio' from luz where datediff (current_date, vencimiento)>0 group by documento;
select matricula,horallegada,horasalida, left(timediff(horasalida,horallegada),5) as horasminutos, if (hour(timediff(horasalida,horallegada))>4, hour(timediff(horasalida,horallegada)) div 4,0) as horagratis from vehiculos where horasalida is not null;
SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;
select nombre,promedio, if (promedio>=9,'medalla','') from alumnos
select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas;
select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas;


A. Un profesor guarda los promedios de sus alumnos de un curso en una tabla llamada "alumnos".

create table alumnos(
  expediente char(5) not null,
  nombre varchar(30),
  promedio decimal(4,2)
);

1- Inserta los siguientes registros:
 insert into alumnos values(3456,'Perez Luis',8.5);
 insert into alumnos values(3556,'Garcia Ana',7.0);
 insert into alumnos values(3656,'Ludueña Juan',9.6);
 insert into alumnos values(2756,'Moreno Gabriela',4.8);
 insert into alumnos values(4856,'Morales Hugo',3.2);

2- Si el alumno tiene un promedio superior o igual a 4, muestra un mensaje "aprobado" en caso contrario "suspendido":

SELECT promedio, if (promedio>=4, 'aprobado','suspendido') from alumnos;

3- Es política del profesor entregar una medalla a quienes tengan un promedio igual o superior a 9. Muestra los nombres y promedios de los alumnos y un mensaje "medalla" a quienes cumplan con ese requisito:


select nombre,promedio, if (promedio>=9,'medalla','') from alumnos

B) Un teatro con varias salas guarda la información de las entradas vendidas en una tabla llamada "entradas".

create table entradas(
  sala tinyint unsigned,
  fecha date,
  hora time,
  capacidad smallint unsigned,
  entradasvendidas smallint unsigned,
  primary key(sala,fecha,hora)
 );

1- Inserta algunos registros:
 insert into entradas values(1,'2006-05-10','20:00',300,50);
 insert into entradas values(1,'2006-05-10','23:00',300,250);
 insert into entradas values(2,'2006-05-10','20:00',400,350);
 insert into entradas values(2,'2006-05-11','20:00',400,380);
 insert into entradas values(2,'2006-05-11','23:00',400,400);
 insert into entradas values(3,'2006-05-12','20:00',350,350);
 insert into entradas values(3,'2006-05-12','22:30',350,100);
 insert into entradas values(4,'2006-05-12','20:00',250,0);

2- Muestra todos los registros y un mensaje si las entradas para una función están agotadas:


select *, if(entradasvendidas >= capacidad, 'agotadas','') from entradas

3- Muestra todos los datos de las funciones que tienen vendidas entradas y muestre un mensaje si se vendió más o menos de la mitad de la capacidad de la sala:

select *, if(entradasvendidas >0 and `entradasvendidas`>(capacidad/2), 'mas de la mitad','menos de la mitad') from entradas



Ejercicio: Tabla vehículos
Un parking guarda cada día los datos de los vehículos que acceden a la playa en una tabla llamada "vehiculos".

create table vehiculos(
  matricula char(6) not null,
  tipo char(4),
  horallegada time not null,
  horasalida time,
  primary key(matricula,horallegada)
 );

1- Inserta algunos registros:
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('ACD123','auto','8:30','9:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('AKL098','auto','8:45','15:10');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('HGF123','auto','9:30','18:40');
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('DRT123','auto','15:30',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('FRT545','moto','19:45',null);
insert into vehiculos (matricula,tipo,horallegada,horasalida)  values('GTY154','auto','20:30','21:00');

2- Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más una columna que calcule la cantidad de horas que estuvo cada vehículo en la playa, sin considerar los que aún no se fueron de la playa:


SELECT `matricula`,`horallegada`,`horasalida`,left(timediff(horasalida,horallegada),5) as horasminutos FROM `vehiculos`

3- Se cobra 1 euro por hora. Pero si un vehículo permanece en la playa 4 horas, se le cobran 3 euros, es decir, no se le cobra la cuarta hora; si está 8 horas, se cobran 6 euros, y así sucesivamente. Muestra la matricula, la hora de llegada y de salida de todos los vehículos, más la columna que calcule la cantidad de horas que estuvo cada vehículo en la playa (sin considerar los que aún no se fueron de la playa) y otra columna utilizando "if" que muestre la cantidad de horas gratis:

 select matricula,horallegada,horasalida,
  left(timediff(horasalida,horallegada),5) as horasminutos,
  if (hour(timediff(horasalida,horallegada))>4,
  hour(timediff(horasalida,horallegada)) div 4,0) as horagratis
  from vehiculos
  where horasalida is not null;

No hay comentarios:

Publicar un comentario