Sobes.tech
Intern

Ako inak možno riešiť problém hľadania zamestnancov starších ako vedúci? (alternatívne prístupy)

sobes.tech AI

Odpoveď od AI

Pre úlohu hľadania zamestnancov, ktorí sú starší ako ich nadriadení, je možné použiť niekoľko alternatívnych prístupov v SQL:

  1. Self Join (samostatné spojenie) — klasický spôsob, keď sa tabuľka zamestnancov spojí sama so sebou podľa poľa nadriadeného, a potom sa porovnajú dátumy narodenia:
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. Použitie okienkových funkcií — ak štruktúra dát umožňuje, môžu sa použiť okienkové funkcie na získanie dátumu narodenia nadriadeného:
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. Poddotazy (subqueries) — môže sa použiť poddotaz na získanie dátumu narodenia nadriadeného:
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. Použitie CTE (WITH) — na zlepšenie čitateľnosti a opätovné použitie dát:
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;

Výber prístupu závisí od objemu dát, možností SGBD a požiadaviek na výkon.