Ejercicios SQL

DML1 1. Quiero saber el nombre y teléfono de todos los clientes SELECT nombre, telefono FROM CLIENTES 2. Quiero saber t

Views 208 Downloads 7 File size 46KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

DML1 1.

Quiero saber el nombre y teléfono de todos los clientes SELECT nombre, telefono FROM CLIENTES 2. Quiero saber todas las matrículas, marcas y modelos de los vehículos del taller ordenados por marca SELECT matricula, marca, modelo FROM VEHICULOS ORDER BY marca 3.

Quiero saber las caracteristicas, fecha de reparacion y coste de las averias del coche con matricula ‘LO4499P’ ordenadas de mayor a menor coste SELECT caracteristicas, fecha_reparacion, coste FROM AVERIAS WHERE matricula=‘LO4499P’ ORDER BY coste DESC 4.

Dime el nombre del personal que su teléfono empieza por 6 SELECT nombre FROM PERSONAL WHERE telefono LIKE ‘6%’

5. ¿Cuántos vehículos han pasado por mi taller? SELECT COUNT(matricula) FROM VEHICULOS 6. ¿Cuántos vehículos han pasado por taller del cliente ‘Carlos’? SELECT COUNT(*) FROM VEHICULOS v, CLIENTES c WHERE v.cod_cliente=c.cod_cliente AND c.nombre=’Carlos’ 7. Matrículas y fecha de reparación de los coches reparados por Fernando SELECT Matricula, Fecha_reparacion FROM AVERIAS, PERSONAL WHERE dni=mecanico AND nombre=’Fernado’ 8.

¿Cuántos vehículos han pasado por taller agrupados por marca del cliente ‘Carlos’? SELECT COUNT(marca),marca FROM VEHICULOS v, CLIENTES c WHERE v.cod_cliente=c.cod_cliente AND c.nombre=’Carlos’ GROÛP BY marca 9. Quiero saber cuántos empleados que se llaman Pedro. SELECT COUNT(nombre) FROM PERSONAL WHERE nombre=’Pedro’ 10. Quiero saber matrícula y modelo de coches de la marca OPEL que ha arreglado Pedro. SELECT modelo, matricula FROM AVERIAS a , PERSONAL p , VEHICULOS v WHERE p.dni = a.mecanico AND v.matricula=a.matricula AND nombre=’Pedro’ AND marca=’Opel’ 11. Quiero saber los modelos y fecha de reparación de coches de la marca OPEL que ha arreglado Pedro. SELECT modelo,fecha_reparacion FROM VEHICULOS v, AVERIAS a, PERSONAL p WHERE v.matricula=a.matricula AND p.dni=a.mecanico AND p.nombre=’Pedro’ AND v.marca=’Opel’;

12. Quiero saber el nombre del propietario, el modelos y la fecha de reparación de coches de la marca MERCEDES que ha arreglado Pedro. SELECT c.nombre,modelo,fecha_reparacion FROM CLIENTES c, VEHICULOS v, AVERIAS a, PERSONAL p WHERE c.cod_cliente=v.cod_cliente AND v.matricula=a.matricula AND p.dni=a.mecanico AND p.nombre=’Pedro’ AND v.marca=’MERCEDES’; 13. ¿Cúal es el coste de la avería más cara? SELECT max(coste) FROM AVERIAS 14. ¿Cúal ha sido la media de coste de las averías? SELECT AVG(coste) FROM AVERIAS 15. Dime los datos de la avería más barata. SELECT * FROM AVERIAS WHERE coste=MIN(coste) 16. ¿Cuántas averías se repararon el ‘14/11/2014’? SELECT COUNT (fecha_reparacion) FROM AVERIAS WHERE fecha_reparacion=´14/11/2014´; 17. ¿Cuántas averías reparó el ‘14/11/2014’ el mecanico ‘Pedro’? SELECT COUNT (cod_averia) FROM AVERIAS a, PERSONAL p WHERE p.dni=a.mecanico AND fecha_reparacion=’14/11/2014’ AND nombre=’Pedro’; 18. Dime la matrícula del coche, características de la avería, coste y descripción de la reparación de todas las averías a partir del ‘01/01/2014’ ordenadas de las más caras a las más baratas. SELECT matricula, caracteristicas, coste, descripcion_reparacion FROM AVERIAS WHERE fecha_reparacion >=’01/01/2014’ ORDER BY coste DESC 19. Quiero saber el nombre del cliente, la matricula, la fecha de reparación y el coste de las averias de los coches de Manolo y Luisa cuyo coste es superior a 100 SELECT C.nombre, V.matricula, A.fecha_reparacion, A.coste FROM CLIENTES C, VEHICULOS V, AVERIAS A WHERE V.matricula=A.matricula AND C.cod_cliente=V.cod_cliente AND C.nombre IN (‘Manolo’, ‘Luisa’) AND A.coste >100 20. De cúantas piezas tengo una cantidad inferior a 10 en el taller? SELECT COUNT (cod_pieza) FROM PIEZAS WHERE cantidad =’5’ AND t.name LIKE ’C%’; 6. Quiero insertar la asignatura ‘Free Operating Systems’ con el código ‘FOS’ INSERT INTO SUBJECTS (subjectcode,description) VALUES (‘FOS’,’Free Operating Systems’); 7. Quiero añadir al profesor Andrés Muñoz INSERT INTO TEACHERS (teachercard, name, surname) VALUES (‘Boss002’, ‘Andres’, ‘Muñoz’); 8. Quiero añadir un examen de la asignatura que acabo de añadir de 10 preguntas. INSERT INTO EXAMS (questions, date, subjectcode) VALUES (‘10’, getdate(), ‘FOS’); 9. En este examen, Kenan ha sacado un 6,5. INSERT INTO EXAMS_STUDENTS (studentid, examid, mark) VALUES ((select studentid from students where name=’Kenan’), (select examid from exams where subjectcode=’FOS’), ‘6.5’);

10. El 15 de enero el profesor Andrés Muñoz diseñó la ‘práctica 4’ individual de dificultad alta (3) INSERT INTO PRACTICES (TYPE, PRACTICENAME, DIFICULTY) VALUES (’INDIVIDUAL’,‘PRACTICA 4’,3) INSERT INTO PRACTICES_TEACHERS (TEACHERCARD, PRACTICEID,DATE) VALUES ((select teachercard from teachers where name=’Andrés’ and surname=’Muñoz’),(select practiceid from practices where practicename=’Practica 4’ and type=’individual’),‘01/15/2015’)

11.

Quiero actualizar todas las notas de los exámenes de los alumnos que hayan suspendido y poner en la nota un 4. UPDATE EXAMS_STUDENTS SET mark=’4’ WHERE mark < ‘5’ 12. Quiero actualizar la fecha de las prácticas que se han hecho en el 2014 al 1 de enero de 2014 y las prácticas que se han hecho en 2015 a 1 de enero de 2015 UPDATE PRACTICES_STUDENTS SET date=’2014-01-01’ WHERE date BETWEEN ‘2014-01-01’ AND ‘2014-12-31’ UPDATE PRACTICES_STUDENTS SET date=’2015-01-01’ WHERE year(date)=2015

13. Quiero poner que las prácticas en las que la nota media de la misma sea menos de 5 que su dificultad es 4 (muy alta) UPDATE PRACTICES SET difficulty = 4 WHERE practiceid IN (SELECT practiceid FROM PRACTICES_STUDENTS GROUP BY practiceid having AVG (mark) < 5 ) 14. Quiero actualizar todas las prácticas a dificultad 1 y tipo group para todas las prácticas que fueran group y dificultad 2 o dificultad 3. UPDATE PRACTICES SET difficulty = 1, type = ‘group’ WHERE type = ‘group’ AND (difficulty =2 OR difficulty = 3) 15. Todos los profesores que su identificador no empiece por ‘BOS’ tenemos que añadírselo al principio. UPDATE TEACHERS SET teachercard=’BOS’ + teachercard WHERE teachercard NOT LIKE ‘BOS%’

16. Borra los exámenes de los alumnos en los que la nota sea menor de 5 DELETE FROM exams_stundents WHERE mark 1500

17. Quiero saber cuántos coches ha vendido cada comercial en 2014 (una sola consulta) SELECT COUNT (plate), SE.name FROM SELLS S, SELLERS SE WHERE S.sellerid = SE.sellerid AND year(date) = 2014 GROUP BY SE.name 18. Quiero saber la marca y modelo de los coches que vendió Carolina en 2014. En la misma consulta quiero ver la marca y modelo de los coches que se vendieron y que costaban más de 20000 en 2014. --Opción 1 SELECT C.brand, C.model, SE.name FROM CATALOG C, SELLS S, SELLERS SE WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid AND (SE.name = 'Carolina' OR C.price >20000 ) AND year(date) = 2014 --Opción 2 SELECT C.brand, C.model, SE.name FROM CATALOG C, SELLS S, SELLERS SE WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid AND SE.name = 'Carolina' AND year(date) = 2014 UNION SELECT C.brand, C.model, SE.name FROM CATALOG C, SELLS S, SELLERS SE WHERE SE.sellerid = S.sellerid AND S.catalogid = C.catalogid AND c.price>20000 AND year(date) = 2014 19. Cuántos coches se han vendido sin extras? select COUNT(*) from SELLS where plate not in ( select plate from EXTRAS_SELLS) 20. ¿Cuánto dinero se ha facturado en total en 2014 sin tener en cuenta los extras? --Option1 SELECT SUM(price) FROM CATALOG c, SELLS s WHERE s.catalogid=c.catalogid and year(date)=2014 --Option2 SELECT SUM(price) FROM CATALOG WHERE catalogid in (select catalogid from sells where year(date)=2014) 21. ¿Cuánto dinero ha facturado cada vendedor sin tener en cuenta los extras? --Option1 SELECT SUM(price),sellerid FROM CATALOG c, SELLS s WHERE s.catalogid=c.catalogid and year(date)=2014 group by sellerid --Option2 SELECT SUM(price),name FROM CATALOG c, SELLS s, SELLERS se WHERE s.catalogid=c.catalogid and s.sellerid=se.sellerid and year(date)=2014 group by name 22. En una consulta quiero tener la matrícula, descripción de la marca, modelo, precio, nombre del comprador, nombre del vendedor de todas las ventas de octubre de 2014 SELECT plate, description, model, price, c.name buyer, se.name FROM sells s, sellers se, customers c, brands b, catalog ca WHERE s.customerid=c.customerid and s.sellerid=se.sellerid and s.catalogid=ca.catalogid and b.brandid=ca.brand and date between '2014-10-01' and '2014-10-31'