Consultas SQL Avanzadas: Ejemplos Prácticos para la Gestión de Datos

Clasificado en Diseño e Ingeniería

Escrito el en español con un tamaño de 2,65 KB

Consultas SQL Avanzadas

Ejercicios Resueltos

  1. Listar los clientes (numclie, nombre) que remitieron pedidos del fabricante ACI y el número de producto comience por 4100, entre enero y el 15 de abril de 1990.

    SELECT numclie, nombre FROM clientes WHERE numclie IN 
    (SELECT clie from pedidos where fab='aci' AND substring (producto,1,4)='4100'AND(fechapedido > '01/01/1985' AND fechapedido < '15/04/1990'))
  2. Listar los empleados (numemp, nombre) que realizaron un pedido que represente más del 1% de su cuota.

    SELECT numemp, nombre FROM empleados WHERE numemp = ANY 
    (SELECT rep FROM pedidos WHERE importe > (cuota * 0.01))
  3. Listar los empleados que tengan una cuota superior a la cuota de alguno de sus compañeros de oficina. Es decir, los empleados que no tengan la menor cuota de la oficina.

    SELECT * from empleados where cuota > any
    (SELECT cuota FROM empleados WHERE empleados.oficina=empleados.oficina)
  4. Listar el numclie y los nombres de los clientes que tienen asignado el representante Juan Gris.

    SELECT numclie, nombre FROM clientes WHERE repclie = ANY 
    (SELECT numemp FROM empleados WHERE nombre = 'Juan Gris')
  5. Listar los empleados que tengan la mayor cuota de la oficina.

    SELECT numemp, nombre, edad, oficina, cuota, ventas FROM empleados WHERE cuota >=all
    (SELECT cuota FROM empleados WHERE empleados.oficina=empleados.oficina)
  6. Listar los empleados que no tengan algún pedido del fabricante ACI.

    SELECT * FROM empleados WHERE NOT EXISTS 
    (SELECT * FROM pedidos WHERE fab='ACI' AND rep=numemp)
  7. Listar los empleados (numemp, nombre y oficina) que no trabajan en oficinas dirigidas por el empleado 108.

    SELECT numemp, nombre, oficina FROM empleados WHERE NOT EXISTS 
    (SELECT * FROM oficinas WHERE dir = 108 AND empleados.oficina = oficinas.oficina)
  8. Listar los productos (clave y descripción) de los que no se hizo ningún pedido de 10 € o más.

    SELECT idfab, idproducto, descripcion FROM productos WHERE NOT EXISTS 
    (SELECT * FROM pedidos WHERE idfab = fab AND idproducto = producto AND importe >= 10)
  9. Listar las oficinas (oficina, ciudad) que tienen al menos un empleado que tenga una cuota que represente más del 55% del objetivo de la oficina.

    SELECT oficina, ciudad FROM oficinas WHERE EXISTS 
    (SELECT * FROM empleados WHERE oficinas.oficina = empleados.oficina AND cuota > (0.55*objetivo))

Entradas relacionadas: