11 SQL Server-EJER - DML - DDL - PROPUESTOS
11 SQL Server-EJER - DML - DDL - PROPUESTOS
https://josejuansanchez.org/bd/ejercicios-consultas-sql/index.html#consultas-sobre-una-tabla
Apuntes de BD para DAW, DAM y ASIR
José Juan Sánchez Hernández
Curso 2023/2024
INDI CE
1.4 JARDINERÍA
1.4.1 Modelo entidad/relación
1.4.2 Base de datos para SQLServer
1.4.3 Datos
1.4.4 Consultas sobre una tabla
1.4.5 Consultas multitabla (Composición interna)
1.4.6 Consultas multitabla (Composición externa)
1.4.7 Consultas resumen
1.4.8 Subconsultas
Angel Tello Valles correo: [email protected] 1
1.4.8.1 Con operadores básicos de comparación
1.4.8.2 Subconsultas con ALL y ANY
1.4.8.3 Subconsultas con IN y NOT IN
1.4.8.4 Subconsultas con EXISTS y NOT EXISTS
1.4.8.5 Subconsultas correlacionadas
1.4.9 Consultas variadas
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.
1 Devuelve un listado con todos los empleados junto con los datos de los departamentos donde
trabajan. Este listado también debe incluir los empleados que no tienen ningún departamento
asociado.
2 Devuelve un listado donde sólo aparezcan aquellos empleados que no tienen ningún departamento
asociado.
3 Devuelve un listado donde sólo aparezcan aquellos departamentos que no tienen ningún empleado
asociado.
1.2.7 Subconsultas
1. Devuelve un listado con todos los empleados que tiene el departamento de Sistemas. (Sin
utilizar INNER JOIN).
2. Devuelve el nombre del departamento con mayor presupuesto y la cantidad que tiene asignada.
3. Devuelve el nombre del departamento con menor presupuesto y la cantidad que tiene asignada.
1. Devuelve un listado con todos los pedidos que se han realizado. Los pedidos deben estar
ordenados por la fecha de realización, mostrando en primer lugar los pedidos más recientes.
2. Devuelve todos los datos de los dos pedidos de mayor valor.
3. Devuelve un listado con los identificadores de los clientes que han realizado algún pedido. Tenga en
cuenta que no debe mostrar identificadores que estén repetidos.
4. Devuelve un listado de todos los pedidos que se realizaron durante el año 2017, cuya cantidad total
sea superior a 500 soles .
5. Devuelve un listado con el nombre y los apellidos de los comerciales que tienen una comisión entre
0.05 y 0.11.
6. Devuelve el valor de la comisión de mayor valor que existe en la tabla comercial.
7. Devuelve el identificador, nombre y primer apellido de aquellos clientes cuyo segundo
apellido no es NULL. El listado deberá estar ordenado alfabéticamente por apellidos y nombre.
8. Devuelve un listado de los nombres de los clientes que empiezan por A y terminan por n y también
los nombres que empiezan por P. El listado deberá estar ordenado alfabéticamente.
9. Devuelve un listado de los nombres de los clientes que no empiezan por A. El listado deberá estar
ordenado alfabéticamente.
10. Devuelve un listado con los nombres de los comerciales que terminan por el o o. Tenga en cuenta
que se deberán eliminar los nombres repetidos.
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.
1. Devuelve un listado con todos los clientes junto con los datos de los pedidos que han realizado.
Este listado también debe incluir los clientes que no han realizado ningún pedido. El listado debe
estar ordenado alfabéticamente por el primer apellido, segundo apellido y nombre de los clientes.
2. Devuelve un listado con todos los comerciales junto con los datos de los pedidos que han
realizado. Este listado también debe incluir los comerciales que no han realizado ningún pedido. El
listado debe estar ordenado alfabéticamente por el primer apellido, segundo apellido y nombre de
los comerciales.
3. Devuelve un listado que solamente muestre los clientes que no han realizado ningún pedido.
4. Devuelve un listado que solamente muestre los comerciales que no han realizado ningún pedido.
5. Devuelve un listado con los clientes que no han realizado ningún pedido y de los comerciales que
no han participado en ningún pedido. Ordene el listado alfabéticamente por los apellidos y el
nombre. En en listado deberá diferenciar de algún modo los clientes y los comerciales.
6. ¿Se podrían realizar las consultas anteriores con NATURAL LEFT JOIN o NATURAL RIGHT JOIN?
Justifique su respuesta.
7. Calcula la cantidad total que suman todos los pedidos que aparecen en la tabla pedido.
8. Calcula la cantidad media de todos los pedidos que aparecen en la tabla pedido.
9. Calcula el número total de comerciales distintos que aparecen en la tabla pedido.
10. Calcula el número total de clientes que aparecen en la tabla cliente.
11. Calcula cuál es la mayor cantidad que aparece en la tabla pedido.
12. Calcula cuál es la menor cantidad que aparece en la tabla pedido.
13. Calcula cuál es el valor máximo de categoría para cada una de las ciudades que aparece en la
tabla cliente.
14. Calcula cuál es el máximo valor de los pedidos realizados durante el mismo día para cada uno de los
clientes. Es decir, el mismo cliente puede haber realizado varios pedidos de diferentes cantidades el
mismo día. Se pide que se calcule cuál es el pedido de máximo valor para cada uno de los días en
los que un cliente ha realizado un pedido. Muestra el identificador del cliente, nombre, apellidos, la
fecha y el valor de la cantidad.
15. Calcula cuál es el máximo valor de los pedidos realizados durante el mismo día para cada uno de los
clientes, teniendo en cuenta que sólo queremos mostrar aquellos pedidos que superen la cantidad
de 2000 soles .
16. Calcula el máximo valor de los pedidos realizados para cada uno de los comerciales durante la
fecha 2016-08-17. Muestra el identificador del comercial, nombre, apellidos y total.
17. Devuelve un listado con el identificador de cliente, nombre y apellidos y el número total de pedidos
que ha realizado cada uno de clientes. Tenga en cuenta que pueden existir clientes que no han
1.3.7 Subconsultas
1. Devuelve un listado con todos los pedidos que ha realizado Adela Salas Díaz. (Sin utilizar INNER
JOIN).
2. Devuelve el número de pedidos en los que ha participado el comercial Daniel Sáez Vega. (Sin
utilizar INNER JOIN)
3. Devuelve los datos del cliente que realizó el pedido más caro en el año 2019. (Sin utilizar INNER
JOIN)
4. Devuelve la fecha y la cantidad del pedido de menor valor realizado por el cliente Pepe Ruiz
Santana.
5. Devuelve un listado con los datos de los clientes y los pedidos, de todos los clientes que han
realizado un pedido durante el año 2017 con un valor mayor o igual al valor medio de los pedidos
realizados durante ese mismo año.
1.4.3 Datos
Acceder al script SQL para la creación de la base de datos y la inserción de datos: jardineria.sql.
11. Devuelve un listado de todos los pedidos que fueron rechazados en 2009.
12. Devuelve un listado de todos los pedidos que han sido entregados en el mes de enero de cualquier
año.
13. Devuelve un listado con todos los pagos que se realizaron en el año 2008 mediante Paypal. Ordene
el resultado de mayor a menor.
14. Devuelve un listado con todas las formas de pago que aparecen en la tabla pago. Tenga en cuenta
que no deben aparecer formas de pago repetidas.
15. Devuelve un listado con todos los productos que pertenecen a la gama Ornamentales y que tienen
más de 100 unidades en stock. El listado deberá estar ordenado por su precio de venta, mostrando
en primer lugar los de mayor precio.
16. Devuelve un listado con todos los clientes que sean de la ciudad de Madrid y cuyo representante de
ventas tenga el código de empleado 11 o 30.
Resuelva todas las consultas utilizando la sintaxis de SQL1 y SQL2. Las consultas con sintaxis de SQL2 se
deben resolver con INNER JOIN y NATURAL JOIN.
1. Obtén un listado con el nombre de cada cliente y el nombre y apellido de su representante de
ventas.
2. Muestra el nombre de los clientes que hayan realizado pagos junto con el nombre de sus
representantes de ventas.
3. Muestra el nombre de los clientes que no hayan realizado pagos junto con el nombre de sus
representantes de ventas.
4. Devuelve el nombre de los clientes que han hecho pagos y el nombre de sus representantes junto
con la ciudad de la oficina a la que pertenece el representante.
5. Devuelve el nombre de los clientes que no hayan hecho pagos y el nombre de sus representantes
junto con la ciudad de la oficina a la que pertenece el representante.
6. Lista la dirección de las oficinas que tengan clientes en Fuenlabrada.
7. Devuelve el nombre de los clientes y el nombre de sus representantes junto con la ciudad de la
oficina a la que pertenece el representante.
8. Devuelve un listado con el nombre de los empleados junto con el nombre de sus jefes.
9. Devuelve un listado que muestre el nombre de cada empleado, el nombre de su jefe y el nombre
del jefe de sus jefe.
10. Devuelve el nombre de los clientes a los que no se les ha entregado a tiempo un pedido.
11. Devuelve un listado de las diferentes gamas de producto que ha comprado cada cliente.
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN, RIGHT JOIN, NATURAL LEFT
JOIN y NATURAL RIGHT JOIN.
1. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pago.
2. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pedido.
3. Devuelve un listado que muestre los clientes que no han realizado ningún pago y los que no han
realizado ningún pedido.
4. Devuelve un listado que muestre solamente los empleados que no tienen una oficina asociada.
Angel Tello Valles correo: [email protected] 15
5. Devuelve un listado que muestre solamente los empleados que no tienen un cliente asociado.
6. Devuelve un listado que muestre solamente los empleados que no tienen un cliente asociado junto
con los datos de la oficina donde trabajan.
7. Devuelve un listado que muestre los empleados que no tienen una oficina asociada y los que no
tienen un cliente asociado.
8. Devuelve un listado de los productos que nunca han aparecido en un pedido.
9. Devuelve un listado de los productos que nunca han aparecido en un pedido. El resultado debe
mostrar el nombre, la descripción y la imagen del producto.
10. Devuelve las oficinas donde no trabajan ninguno de los empleados que hayan sido los
representantes de ventas de algún cliente que haya realizado la compra de algún producto de la
gama Frutales.
11. Devuelve un listado con los clientes que han realizado algún pedido, pero no han realizado ningún
pago.
12. Devuelve un listado con los datos de los empleados que no tienen clientes asociados y el nombre
de su jefe asociado.
1.4.8 Subconsultas
11. Devuelve el nombre, apellido1 y cargo de los empleados que no representen a ningún cliente.
12. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pago.
13. Devuelve un listado que muestre solamente los clientes que sí han realizado algún pago.
14. Devuelve un listado de los productos que nunca han aparecido en un pedido.
15. Devuelve el nombre, apellidos, puesto y teléfono de la oficina de aquellos empleados que no sean
representante de ventas de ningún cliente.
16. Devuelve las oficinas donde no trabajan ninguno de los empleados que hayan sido los
representantes de ventas de algún cliente que haya realizado la compra de algún producto de la
gama Frutales.
17. Devuelve un listado con los clientes que han realizado algún pedido pero no han realizado ningún
pago.
18. Devuelve un listado que muestre solamente los clientes que no han realizado ningún pago.
19. Devuelve un listado que muestre solamente los clientes que sí han realizado algún pago.
20. Devuelve un listado de los productos que nunca han aparecido en un pedido.
21. Devuelve un listado de los productos que han aparecido en un pedido alguna vez.
1. Devuelve el listado de clientes indicando el nombre del cliente y cuántos pedidos ha realizado.
Tenga en cuenta que pueden existir clientes que no han realizado ningún pedido.
2. Devuelve un listado con los nombres de los clientes y el total pagado por cada uno de ellos. Tenga
en cuenta que pueden existir clientes que no han realizado ningún pago.
3. Devuelve el nombre de los clientes que hayan hecho pedidos en 2008 ordenados alfabéticamente
de menor a mayor.
4. Devuelve el nombre del cliente, el nombre y primer apellido de su representante de ventas y el
número de teléfono de la oficina del representante de ventas, de aquellos clientes que no hayan
realizado ningún pago.
1.5.3 Datos
Acceder al script SQL para la creación de la base de datos y la inserción de datos: universidad_a.sql.
1. Devuelve un listado con el primer apellido, segundo apellido y el nombre de todos los alumnos. El
listado deberá estar ordenado alfabéticamente de menor a mayor por el primer apellido, segundo
apellido y nombre.
2. Averigua el nombre y los dos apellidos de los alumnos que no han dado de alta su número de
teléfono en la base de datos.
1. Devuelve un listado con los datos de todas las alumnas que se han matriculado alguna vez en
el Grado en Ingeniería Informática (Plan 2015).
2. Devuelve un listado con todas las asignaturas ofertadas en el Grado en Ingeniería Informática (Plan
2015).
3. Devuelve un listado de los profesores junto con el nombre del departamento al que están
vinculados. El listado debe devolver cuatro columnas, primer apellido, segundo apellido, nombre y
nombre del departamento. El resultado estará ordenado alfabéticamente de menor a mayor por
los apellidos y el nombre.
4. Devuelve un listado con el nombre de las asignaturas, año de inicio y año de fin del curso escolar
del alumno con nif 26902806M.
5. Devuelve un listado con el nombre de todos los departamentos que tienen profesores que
imparten alguna asignatura en el Grado en Ingeniería Informática (Plan 2015).
6. Devuelve un listado con todos los alumnos que se han matriculado en alguna asignatura durante el
curso escolar 2018/2019.
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.
1. Devuelve un listado con los nombres de todos los profesores y los departamentos que tienen
vinculados. El listado también debe mostrar aquellos profesores que no tienen ningún
departamento asociado. El listado debe devolver cuatro columnas, nombre del departamento,
primer apellido, segundo apellido y nombre del profesor. El resultado estará ordenado
alfabéticamente de menor a mayor por el nombre del departamento, apellidos y el nombre.
2. Devuelve un listado con los profesores que no están asociados a un departamento.
3. Devuelve un listado con los departamentos que no tienen profesores asociados.
4. Devuelve un listado con los profesores que no imparten ninguna asignatura.
5. Devuelve un listado con las asignaturas que no tienen un profesor asignado.
6. Devuelve un listado con todos los departamentos que tienen alguna asignatura que no se haya
impartido en ningún curso escolar. El resultado debe mostrar el nombre del departamento y el
nombre de la asignatura que no se haya impartido nunca.
1.5.8 Subconsultas
);
1.6.3 Datos
Acceder al script SQL para la creación de la base de datos y la inserción de datos: universidad_b.sql.
6. Devuelve un listado con el primer apellido, segundo apellido y el nombre de todos los alumnos. El
listado deberá estar ordenado alfabéticamente de menor a mayor por el primer apellido, segundo
apellido y nombre.
7. Devuelve un listado con los datos de todas las alumnas que se han matriculado alguna vez en
el Grado en Ingeniería Informática (Plan 2015).
8. Devuelve un listado con todas las asignaturas ofertadas en el Grado en Ingeniería Informática (Plan
2015).
9. Devuelve un listado de los profesores junto con el nombre del departamento al que están
vinculados. El listado debe devolver cuatro columnas, primer apellido, segundo apellido, nombre y
nombre del departamento. El resultado estará ordenado alfabéticamente de menor a mayor por
los apellidos y el nombre.
10. Devuelve un listado con el nombre de las asignaturas, año de inicio y año de fin del curso escolar
del alumno con nif 26902806M.
11. Devuelve un listado con el nombre de todos los departamentos que tienen profesores que
imparten alguna asignatura en el Grado en Ingeniería Informática (Plan 2015).
12. Devuelve un listado con todos los alumnos que se han matriculado en alguna asignatura durante el
curso escolar 2018/2019.
Resuelva todas las consultas utilizando las cláusulas LEFT JOIN y RIGHT JOIN.
7. Devuelve un listado con los nombres de todos los profesores y los departamentos que tienen
vinculados. El listado también debe mostrar aquellos profesores que no tienen ningún
departamento asociado. El listado debe devolver cuatro columnas, nombre del departamento,
primer apellido, segundo apellido y nombre del profesor. El resultado estará ordenado
alfabéticamente de menor a mayor por el nombre del departamento, apellidos y el nombre.
8. Devuelve un listado con los profesores que no están asociados a un departamento.
9. Devuelve un listado con los departamentos que no tienen profesores asociados.
10. Devuelve un listado con los profesores que no imparten ninguna asignatura.
11. Devuelve un listado con las asignaturas que no tienen un profesor asignado.
12. Devuelve un listado con todos los departamentos que tienen alguna asignatura que no se haya
impartido en ningún curso escolar. El resultado debe mostrar el nombre del departamento y el
nombre de la asignatura que no se haya impartido nunca.
1.5.8 Subconsultas