Salta el contingut

Jardineria - Consultes variades

  1. Retorna la llista de clients indicant el nom del client i quantes comandes ha realitzat. Tingues en compte que poden existir clients que no han realitzat cap comanda. I en aquest cas cal que indiqui 0.

    Possible solució
    SELECT codigo_cliente, nombre_cliente, COUNT(codigo_pedido)
    FROM cliente LEFT JOIN pedido USING (codigo_cliente)
    GROUP BY codigo_cliente, nombre_cliente;
    

    Al comptar un camp que pot tenir valor NULL, si no ha pogut fer el JOIN amb pedido ...

    ... aquest valor comptarà 0. No hagués fet el mateix COUNT(*).

  2. Retorna una llista amb els noms dels clients i el total pagat por cadascun d'ells. Tingues en compte que poden existir clients que no han realitzat cap pagament. En aquests, que surti 0.

    Possible solució
    SELECT codigo_cliente, nombre_cliente, SUM(IFNULL(total, 0))
    FROM cliente LEFT JOIN pago USING (codigo_cliente)
    GROUP BY codigo_cliente, nombre_cliente;
    

    Al sumar un camp que pot tenir valor NULL, si no ha pogut fer el JOIN amb pedido, SUM(total) sumarà NULL

    ... per tal que sumi 0 cal utilitzar SUM(IFNULL(total, 0)).

  3. Retorna el nom dels clients que hagin fet comandes el 2008 ordenats alfabèticament de menor a major.

    Possible solució
    SELECT nombre_cliente
    FROM cliente
    WHERE codigo_cliente IN (SELECT codigo_cliente
                             FROM pedido
                             WHERE YEAR(fecha_pedido) = 2008)
    ORDER BY 1;
    
  4. Retorna el nom del client, el nom i primer cognom del seu representant de vendes i el número de telèfon de l'oficina del representante de vendes, d'aquells clients que no hagin realitzat cap pagament.

    Possible solució
    SELECT nombre_cliente, nombre, apellido1, o.telefono
    FROM cliente 
         JOIN empleado ON (codigo_empleado = codigo_empleado_rep_ventas)
         JOIN oficina o USING(codigo_oficina)
    WHERE codigo_cliente NOT IN (SELECT DISTINCT codigo_cliente
                                 FROM pago);
    
  5. Retorna la llista de clients on aparegui el nom del client, el nom i primer cognom del seu representant de vendes i la ciudad on hi ha la seva oficina.

    Possible solució
    SELECT nombre_cliente, nombre, apellido1, o.ciudad
    FROM cliente 
         JOIN empleado ON (codigo_empleado = codigo_empleado_rep_ventas)
         JOIN oficina o USING(codigo_oficina);
    
  6. Retorna el nom, cognoms, lloc de treball i telèfon de l'oficina d'aquells empleats que no siguin representanta de vendes de cap client.

    Possible solució
    SELECT nombre, apellido1, apellido2, puesto, o.telefono
    FROM empleado
         JOIN oficina o USING(codigo_oficina)
    WHERE codigo_empleado NOT IN (SELECT DISTINCT codigo_empleado_rep_ventas
                                  FROM cliente);
    
  7. Retorna una llista indicant totes les ciutats on hi ha oficines i el nombre d'empleats que té.

    Possible solució
    SELECT ciudad, COUNT(*)
    FROM oficina JOIN empleado USING (codigo_oficina)
    GROUP BY ciudad;