Sobes.tech
Intern

Como mais pode-se resolver o problema de procurar funcionários mais velhos que o gerente? (abordagens alternativas)

sobes.tech IA

Resposta da IA

Para a tarefa de procurar funcionários que sejam mais velhos que os seus supervisores, podem ser utilizados vários métodos alternativos em SQL:

  1. Auto-join (Self Join) — método clássico onde a tabela de funcionários é unida a si mesma pelo campo do supervisor, e depois as datas de nascimento são comparadas:
SELECT e.employee_id, e.name, e.birth_date, m.name AS manager_name, m.birth_date AS manager_birth_date
FROM employees e
JOIN employees m ON e.manager_id = m.employee_id
WHERE e.birth_date < m.birth_date;
  1. Uso de funções de janela — se a estrutura de dados permitir, pode-se usar funções de janela para obter a data de nascimento do supervisor:
SELECT employee_id, name, birth_date, manager_birth_date
FROM (
  SELECT e.*, 
         MAX(CASE WHEN employee_id = manager_id THEN birth_date END) OVER (PARTITION BY manager_id) AS manager_birth_date
  FROM employees e
) sub
WHERE birth_date < manager_birth_date;
  1. Subconsultas — pode-se usar uma subconsulta para obter a data de nascimento do supervisor:
SELECT e.employee_id, e.name, e.birth_date
FROM employees e
WHERE e.birth_date < (
  SELECT m.birth_date FROM employees m WHERE m.employee_id = e.manager_id
);
  1. Uso de CTE (WITH) — para melhorar a legibilidade e reutilização de dados:
WITH managers AS (
  SELECT employee_id, birth_date FROM employees
)
SELECT e.employee_id, e.name
FROM employees e
JOIN managers m ON e.manager_id = m.employee_id
WHERE e.birth_date < m.birth_date;

A escolha do método depende do volume de dados, das capacidades do SGBD e dos requisitos de desempenho.