В MySQL версиях 8+, ROW_NUMBER
- хороший способ удовлетворить это требование:
WITH cte AS (
SELECT DISTINCT first_name, last_name, salary, to_date,
ROW_NUMBER() OVER (PARTITION BY first_name, last_name
ORDER BY to_date DESC) rn
FROM employees e
LEFT JOIN salaries s ON e.emp_no = s.emp_no AND s.salary >= 70000
)
SELECT first_name, last_name, salary, to_date
FROM cte
WHERE rn = 1;
Обратите внимание, что в этом ответе предполагается, что комбинация имени и фамилии сотрудника всегда будет уникальный. В общем, было бы намного лучше использовать здесь какой-либо уникальный идентификатор сотрудника.
Этот ответ может быть неполным без версии, которая также работала бы на MySQL 5.7 или более ранней версии:
SELECT e.first_name, e.last_name, s1.salary, s1.to_date
FROM employees e
LEFT JOIN salaries s1 ON e.emp_no = s1.emp_no AND s1.salary >= 70000
INNER JOIN
(
SELECT emp_no, MAX(to_date) AS max_to_date
FROM salaries
GROUP BY emp_no
) s2
ON s1.emp_no = s2.emp_no AND s1.to_date = s2.max_to_date;