Intern
Wie kann man das Problem lösen, Mitarbeiter zu finden, die älter sind als der Vorgesetzte? (alternative Ansätze)
sobes.tech KI
Antwort von AI
Für die Aufgabe, Mitarbeiter zu finden, die älter sind als ihre Vorgesetzten, können in SQL mehrere alternative Ansätze verwendet werden:
- Selbst-Join (Self Join) — klassische Methode, bei der die Mitarbeitertabelle mit sich selbst anhand des Vorgesetztenfelds verbunden wird, und dann die Geburtsdaten verglichen werden:
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;
- Verwendung von Fensterfunktionen — wenn die Datenstruktur es zulässt, können Fensterfunktionen genutzt werden, um das Geburtsdatum des Vorgesetzten zu ermitteln:
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;
- Unterabfragen (Subqueries) — es kann eine Unterabfrage verwendet werden, um das Geburtsdatum des Vorgesetzten zu erhalten:
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
);
- Verwendung von CTE (WITH) — zur Verbesserung der Lesbarkeit und Wiederverwendbarkeit der Daten:
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;
Die Wahl des Ansatzes hängt vom Datenvolumen, den Fähigkeiten des SGBD und den Leistungsanforderungen ab.