DAM - DAW - MP 0484 Bases de Dades
Pràctica 6: - Base de dades empresa
-
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); -
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; -
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; -
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%'; -
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'; -
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); -
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; -
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; -
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_LEVELde la taulaJOB_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); -
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 WHERESELECT 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'; -
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;