Ejercicios propuestos y resueltos consultas SQL (Jardinería)

Hola a todos, hoy os dejo una serie de ejercicios sobre la base de datos oracle.

Todos los ejercicios que proponemos están resueltos en este mismo post, intenta hacerlo por ti mismo y si te quedas atascado puedes mirar la solución. Recuerda, que no tiene por que estar igual tu solución con la del post, el objetivo es que aprendas no que me copies la solución.

Aquí te dejo la base de datos de jardinería que debes importar.

Si no tienes instalado oracle database XE, os dejo algunos manuales:

Como instalar Oracle Database XE en Windows

Como instalar SQL Developer en Windows

Al final de cada ejercicio, os indico el resultado esperado de la consulta. Si hay muchos datos, indico el numero de filas.

Os dejo el modelo Entidad – Relación de la base de datos:

1. Muestra la ciudad y el codigo postal de las oficinas de España.

Spoiler

 

2. Obtener el nombre y apellidos del jefe de la empresa.

Spoiler

 

3. Mostrar el nombre y cargo de los empleados que no sean directores de oficina.

Spoiler

 

4. Muestra el número de empleados que hay en la empresa.

Spoiler

 

5. Muestra el número de clientes norteamericanos.

Spoiler

 

6. Número de clientes de cada país.

Spoiler

 

7. Muestra el nombre del cliente y el nombre de su representante de ventas (si lo tiene).

Spoiler

 

8. Nombre de los clientes que hayan hecho un pago en 2007

Spoiler

 

9. Los posibles estados de un pedido.

Spoiler

 

10. Muestra el número de pedido, el nombre del cliente, la fecha de entrega y la fecha requerida  de los pedidos que no han sido entregados a tiempo.

Spoiler

 

11. Muestra el código, nombre y gama de los productos que nunca se han pedido (detalle pedidos).

Spoiler

Debe devolver 132 registros.

12. Muestra el nombre y apellidos de los empleados que trabajan en Barcelona.

Spoiler

 

13. Muestra el código y la cantidad de veces que se ha pedido un producto al menos una vez.

Spoiler

Debe devolver 114 registros.

14. Muestra el nombre de los clientes de Miami que han realizado algún pedido.

Spoiler

 

15. Mostrar el precio final de cada pedido.

Spoiler

Debe devolver 88 registros.

16. Mostrar lo que ha pagado cada cliente.

Spoiler

 

17. Mostrar el numero de productos de cada gama.

Spoiler

 

18. Mostrar el código de los pedidos donde se haya vendido el producto de la gama ‘Aromáticas’ mas caro.

Spoiler

 

19. Mostrar el código de los pedidos donde se hayan vendido mas de 6 productos.

Spoiler

 

20. Mostrar el codigo de los pedidos donde el precio del pedido sea superior a la media de todos los pedidos.

Spoiler

 

21. Realiza una vista que muestre los datos de un empleado (nombre, apellidos, ciudad de la oficina) y lo mismo para su jefe (en la misma fila).

Spoiler

 

22. Realiza una vista que muestre el codigo de pedido y su total en euros.

Spoiler

Debe devolver 88 registros.

23. Realiza una vista con la información del pedido (codigo, fechapedido, fechaesperada, fechaentrega, nombre cliente y total en euros) ordenado por total de forma descendente.

Spoiler

Debe devolver 88 registros.

24. Devolverme la gama de productos mas vendida. Sin vistas

Spoiler

 

25. Devolverme la gama de productos mas vendida. Usa vistas

Spoiler

 

26. Muestra el pais(cliente) donde menos pedidos se hacen.

Spoiler

 

Os dejo videos de nuestro canal donde realizo estas consultas:

Espero que os sea de ayuda. Si tenéis cualquier duda, no dudes en preguntar. Estamos para ayudarte.

Compartir

9 comentarios

  1. Wilber

    Hola Fernando, primeramente felicitarte y agradecerte por el aporte que haces a esta comunidad que tiene deseos de aprende. Quería solicitarte tu ayuda en la explicación paso a paso del ejercicio 20, me he confundido en los filtros que utilizaste ya que no usas campos específicos para hacer el comparativo, bueno espero me puedas ayudar. Saludos…

  2. Disco Duro de Roer Post author

    La idea es sacar primero la media de todos los pedidos primero:

    (select avg(t.total)
    from (select p.codigopedido, sum(dp.cantidad * dp.PRECIOUNIDAD) as total
    from pedidos p, detallepedidos dp
    where p.codigopedido = dp.codigopedido
    group by p.codigopedido) t);

    y para cada pedido debes sacar su valor.

    (select sum(dp.cantidad * dp.PRECIOUNIDAD) as total
    from pedidos p, detallepedidos dp
    where p.codigopedido = dp.codigopedido and pe.codigopedido = p.codigopedido
    group by p.codigopedido)

    Ya simplemente es compararlos, saludos.

  3. Mambo

    Muchas gracias muy buen aporte sería de mucho más ayuda si en la creación de la base de datos explicas el uso de cada comando.

  4. Anahid

    No sabras como se hacen los disparadaores y paquetes

  5. karol

    11. Devuelve el nombre, apellido1 y cargo de los empleados que no representen a ningún cliente.

  6. jean

    Hola, en caso de, que a este ejercicio quisiera agregarle un trigger que no permita modificar el precio de venta de un producto si es inferior al precio del proveedor, como lo haria?

  7. Daniel

    Puedes ayudarme con esto

    Crear paquete que contenga un procedimiento y una función:

    El procedimiento debe actualizar el campo de cédula de una tabla ya creada.

    La función debe retornar el nombre de la cédula que se envíe cómo parámetro

  8. Jemmy

    Obtén un listado con el nombre de cada cliente y el nombre y apellido de su representante de ventas.

    podrias hacer este?

  9. Manolo

    Se busca vendedor. Se necesita conocer el nombre del vendedor y la ciudad de su oficina. Lo que conocemos es que vendió un producto que en la descripción de su gama explicaba que se usa para decoración y sus dimensiones están entre 180-200.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *


Warning: Trying to access array offset on value of type null in /home2/discodur/public_html/discoduroderoer/wp-content/themes/disto/single.php on line 539