lucasmouraahere

Módulo 05

Aug 30th, 2019
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 5.48 KB | None | 0 0
  1. -- AULA DE JOINS
  2.  
  3. -- 1º NATURAL JOIN (SÓ SE PODE FAZER JUNÇÃO QUANDO OS DADOS DE AMBAS SÃO IGUAIS)
  4. SELECT * FROM hr.locations;
  5.  
  6. SELECT * FROM hr.departments;
  7.  
  8. SELECT department_id, department_name, city
  9. FROM hr.departments
  10. NATURAL JOIN hr.locations
  11. WHERE department_id IN (50, 10);
  12.  
  13. --2º CLAUSULA USING E EQUIJOINS
  14. SELECT hr.employees.employee_id, hr.employees.last_name,
  15.        hr.departments.location_id, department_id
  16. FROM hr.employees
  17.     JOIN hr.departments
  18. USING (department_id);
  19.  
  20. SELECT l.city, d.department_name
  21. FROM hr.locations l
  22. JOIN hr.departments d
  23. USING(location_id)
  24. WHERE location_id = 1400;
  25.  
  26. SELECT e.employee_id, e.last_name,
  27.        d.location_id, e.department_id,
  28.        d.department_id, e.manager_id
  29. FROM hr.employees e
  30. JOIN hr.departments d
  31. ON (d.department_id = e.department_id) AND e.manager_id = 149;
  32.  
  33. SELECT hr.employees.employee_id, hr.employees.last_name,
  34.        hr.departments.department_id, hr.departments.location_id
  35. FROM hr.employees
  36. JOIN hr.departments
  37.     ON hr.employees.department_id = hr.departments.department_id;
  38.    
  39. --3º CLAUSULA ON SELF-JOIN (RELAÇÃO ENTRE DADOS DA MESMA TABELA AUTO JOIN)
  40. SELECT f.last_name Funcionário, g.last_name Gerente
  41. FROM hr.employees f
  42. JOIN hr.employees g
  43. ON (g.employee_id = f.manager_id);
  44.  
  45. SELECT employee_id, last_name, city, department_name
  46. FROM hr.employees e
  47. JOIN hr.departments d
  48. ON d.department_id = e.department_id
  49. JOIN hr.locations l
  50. ON d.location_id = l.location_id;
  51.  
  52. --4º RIGHT OUTER JOIN, LEFT OUTER JOIN E FULL OUTER JOIN
  53.  
  54. SELECT e.last_name, e.salary, j.job_title
  55.     FROM hr.employees e
  56.     JOIN hr.jobs j
  57.     ON e.salary
  58. BETWEEN j.min_salary AND j.max_salary;
  59.  
  60. SELECT * FROM hr.departments
  61. WHERE department_id = 180;
  62.  
  63. SELECT e.last_name, e.department_id, d.department_name
  64.     FROM hr.employees e FULL OUTER JOIN hr.departments d
  65.     ON (e.department_id = d.department_id);
  66.    
  67. --5º CROSS JOIN (produto cartesiano)
  68.  
  69. SELECT e.last_name, e.salary, j.job_title
  70.     FROM hr.employees e
  71.     JOIN hr.jobs j
  72.     ON e.salary
  73. BETWEEN j.min_salary AND j.max_salary;
  74.  
  75. SELECT last_name, department_name
  76. FROM hr.employees
  77. CROSS JOIN hr.departments;
  78.  
  79. -- Exercicios Módulo
  80.  
  81. /* Crie uma consulta para o departamento de recursos humanos a fim de gerar os endereços de todos os departamentos. Use as tabelas LOCATIONS e COUNTRIES.
  82. Mostre o ID do local, o endereço, a cidade, o estado e o país na saída. Use NATURAL JOIN para gerar os resultados.*/
  83.  
  84. SELECT location_id,
  85.        street_address,
  86.        city,
  87.        state_province,
  88.        country_name
  89. FROM hr.locations
  90. NATURAL JOIN hr.countries;
  91.  
  92. SELECT * FROM hr.locations;
  93. SELECT * FROM hr.countries;
  94.  
  95. /* O departamento de recursos humanos precisa de um relatório de todos os funcionários. Crie uma consulta para exibir o sobrenome,
  96. o número do departamento e o nome do departamento de todos os funcionários.*/
  97.  
  98. SELECT e.last_name, d.department_id, d.department_name
  99. FROM hr.employees e
  100. JOIN hr.departments d
  101. ON e.department_id = d.department_id
  102. ORDER BY last_name ASC;
  103.  
  104. SELECT * FROM hr.departments;
  105. SELECT * FROM hr.employees;
  106.  
  107. /*O departamento de recursos humanos precisa de um relatório dos funcionários em Toronto.
  108. Exiba o sobrenome, o cargo, o número do departamento e o nome do departamento de todos os funcionários que trabalham em Toronto. */
  109.  
  110. SELECT last_name, --employees
  111.        job_id, --jobs
  112.        e.department_id, --department
  113.        department_name,
  114.        city
  115. FROM hr.employees e
  116. JOIN hr.departments d
  117. ON e.department_id = d.department_id
  118. JOIN hr.locations l
  119. ON d.location_id = l.location_id AND l.city = 'Toronto';
  120.  
  121. /*Crie um relatório para exibir o sobrenome e o número dos funcionários, bem como o sobrenome e o número dos respectivos gerentes.
  122. Atribua às colunas os labels Employee, Emp#, Manager e Mgr#, respectivamente.*/
  123.  
  124. SELECT e.last_name Emp#,
  125.        e.employee_id Emp#,
  126.        m.last_name Mgr#,
  127.        e.manager_id Mgr#
  128. FROM hr.employees e
  129. JOIN hr.employees m
  130. ON m.employee_id = e.manager_id;
  131.  
  132. /*Crie um relatório para o departamento de recursos humanos que exiba os sobrenomes e os números de departamento dos funcionários,
  133. bem como todos os funcionários que trabalham no mesmo departamento como um funcionário específico. */
  134.  
  135. SELECT last_name, department_id, department_name
  136. FROM hr.employees e FULL OUTER JOIN hr.departaments d
  137. ON e.department_id = d.department_id;
  138.  
  139. /*O departamento de recursos humanos precisa de um relatório sobre níveis de cargos e salários. Para se familiarizar com a tabela JOBS,
  140. primeiro mostre a estrutura dessa tabela. Em seguida, crie uma consulta que exiba o nome, o cargo, o nome do departamento,
  141. o salário e o nível de todos os funcionários.*/
  142.  
  143.  
  144. SELECT e.last_name,
  145.        j.job_id,
  146.        d.department_name,
  147.        salary,
  148.        job_title
  149. FROM hr.employees e
  150. JOIN hr.jobs j
  151. ON e.job_id = j.job_id
  152. JOIN hr.departments d
  153. ON e.department_id = d.department_id;
  154.  
  155. SELECT * FROM hr.employees;
  156. SELECT * FROM hr.departments;
  157. SELECT * FROM hr.jobs;
  158.  
  159. /* Crie uma query para obter os nomes e as datas de admissão de todos os funcionários admitidos antes dos respectivos gerentes,
  160. além dos nomes e das datas de admissão desses gerentes.*/
  161.  
  162. SELECT e.last_name "Nome Funcinário",
  163.        e.hire_date "Data Admissão Funcionário",
  164.        g.last_name "Nome Gerente",
  165.        g.hire_date "Data Admissão Gerente"
  166. FROM hr.employees e
  167. JOIN hr.employees g
  168. ON g.employee_id = e.manager_id
  169. WHERE e.hire_date < g.hire_date;
Add Comment
Please, Sign In to add comment