Salta el contingut

DAM - DAW - MP 0484 Bases de Dades

Pràctica 6: - Base de dades empresa

  1. Escriu una consulta per mostrar el cognom, el número de departament i el nom de departament per a tots els empleats.

    Possible solució
    SELECT LAST_NAME, DEPARTMENT_ID, DEPARTMENT_NAME
    FROM EMPLOYEES JOIN 
         DEPARTMENTS USING (DEPARTMENT_ID);
    
  2. Crea un llistat únic de tots els càrrecs que hi hagi al departament 80. Inclou la ubicació del departament en el resultat.

    Possible solució
    SELECT DISTINCT JOB_ID, LOCATION_ID
    FROM EMPLOYEES 
         JOIN DEPARTMENTS USING (DEPARTMENT_ID)
    WHERE DEPARTMENT_ID = 80;
    
  3. Escriu una consulta per mostrar el cognom de l' empleat, el nom de departament, l'identificador d'ubicació i la ciutat de tots els empleats que perceben comissió.

    Possible solució
    SELECT LAST_NAME, DEPARTMENT_NAME, LOCATION_ID, CITY
    FROM EMPLOYEES
         JOIN DEPARTMENTS USING (DEPARTMENT_ID)
         NATURAL JOIN LOCATIONS
    WHERE COMMISSION_PCT IS NOT NULL;
    
  4. Visualitza el cognom de l' empleat i el nom de departament per a tots els empleats que tinguin una a en el cognom.

    Possible solució
    SELECT LAST_NAME, DEPARTMENT_NAME
    FROM EMPLOYEES
         JOIN DEPARTMENTS USING (DEPARTMENT_ID)
    WHERE LAST_NAME LIKE '%a%';
    
  5. Escriu una consulta per visualitzar el cognom, el càrrec, el número i el nom de departament per a tots els empleats que treballen a Toronto.

    Possible solució
    SELECT LAST_NAME, JOB_ID, DEPARTMENT_ID, DEPARTMENT_NAME
    FROM EMPLOYEES
         JOIN DEPARTMENTS USING (DEPARTMENT_ID)
         NATURAL JOIN LOCATIONS
    WHERE CITY = 'Toronto';
    
  6. Mostra el cognom i el número d' empleat, juntament amb el cognom i el número del seu director. Etiqueta les columnes Employee, Emp#, Manager i Mgr#, respectivament.

    Possible solució
    SELECT E.LAST_NAME "Employee", E.EMPLOYEE_ID "Emp#", 
           M.LAST_NAME "Manager", M.EMPLOYEE_ID "Mgr#"
    FROM EMPLOYEES E 
         JOIN EMPLOYEES M ON (E.MANAGER_ID = M.EMPLOYEE_ID);
    
  7. Modifica la consulta anterior per visualitzar tots els empleats incloent-hi King, que no té director. Ordena els resultats per número d' empleat.

    Possible solució
    SELECT E.LAST_NAME "Employee", E.EMPLOYEE_ID "Emp#", 
           M.LAST_NAME "Manager", M.EMPLOYEE_ID "Mgr#"
    FROM EMPLOYEES E 
         LEFT JOIN EMPLOYEES M ON (E.MANAGER_ID = M.EMPLOYEE_ID)
    ORDER BY E.EMPLOYEE_ID;
    
  8. Crea una consulta que mostri cognoms d' empleat, números de departament i tots els empleats que treballen en el mateix departament que l’empleat de cognom Davies. Intenta que no surti el mateix Davies. Assigna a cada columna l'etiqueta Empleat, DeptEmpleat#, Company, DeptCompany#.

    Possible solució
    SELECT E.LAST_NAME "Empleat", E.EMPLOYEE_ID "DeptEmpleat#", 
           C.LAST_NAME "Company", C.EMPLOYEE_ID "DeptCompany#"
    FROM EMPLOYEES E 
         JOIN EMPLOYEES C ON (E.DEPARTMENT_ID = C.DEPARTMENT_ID)
    WHERE E.LAST_NAME = 'Davies'
          AND E.EMPLOYEE_ID <> C.EMPLOYEE_ID;
    
  9. Visualitza l'estructura de la taula JOB_GRADES. Creu una consulta que mostri el cognom, el càrrec, el nom de departament, el salari i el grau per a tots els empleats. El grau depèn del sou de cada empleat i el trobeu al camp GRADE_LEVEL de la taula JOB_GRADES.

    Possible solució
    DESCRIBE JOB_GRADES;
    SELECT LAST_NAME, JOB_ID, DEPARTMENT_NAME, SALARY, GRADE_LEVEL
    FROM EMPLOYEES
         JOIN JOB_GRADES ON (SALARY BETWEEN LOWEST_SAL AND HIGHEST_SAL)
         JOIN DEPARTMENTS USING (DEPARTMENT_ID);
    
  10. Crea una consulta per mostrar el cognom i la data de contractació de qualsevol empleat contractat després de l'empleat Davies.

    Possible solució
    CROSS JOIN Amb la condició al WHERE
    SELECT Davies.LAST_NAME, Davies.HIRE_DATE, Altres.LAST_NAME, Altres.HIRE_DATE
    FROM EMPLOYEES Davies CROSS JOIN EMPLOYEES Altres
    WHERE Davies.LAST_NAME = 'Davies' 
          AND Davies.HIRE_DATE < Altres.HIRE_DATE;
    

    o bé

    JOIN ON (Amb la condició de la data)
    SELECT Davies.LAST_NAME, Davies.HIRE_DATE, Altres.LAST_NAME, Altres.HIRE_DATE
    FROM EMPLOYEES Davies 
         JOIN EMPLOYEES Altres 
              ON (Davies.HIRE_DATE < Altres.HIRE_DATE)
    WHERE Davies.LAST_NAME = 'Davies';
    
  11. Crea una consulta amb els noms i les dates de contractació de tots els empleats contractats abans que els seus directors, juntament amb els noms i dates de contractació d'aquests últims.

    Possible solució
    SELECT E.LAST_NAME "NomEmpleat", E.HIRE_DATE "DataEmpleat",
           M.LAST_NAME "NomDirector", M.HIRE_DATE "DataDirector"
    FROM EMPLOYEES E
         JOIN EMPLOYEES M 
              ON (E.MANAGER_ID = M.EMPLOYEE_ID)
    WHERE E.HIRE_DATE < M.HIRE_DATE;