Найти первую должность работника через SQL-(под-)запрос
Условие:
Составить запрос к БД HR. Результат запроса должен содержать две колонки. Первая колонка - имя и фамилия работника. Вторая колонка – первая должность, которую он занял при поступлении на предприятие. Указание: необходимо механизм вложенных запросов при построении предложения SQL.
В общем, я решил составить запрос, и внутри него - подзапрос, выводящий ту должность, на которую сотрудник пришёл раньше всего (т.е. всё согласно условию):
SELECT E.EMPLOYEE_ID,
E.FIRST_NAME||' '||E.LAST_NAME EMP,
J.JOB_ID
FROM EMPLOYEES E
JOIN
(SELECT EMPLOYEE_ID,
JOB_ID,
START_DATE
FROM JOB_HISTORY) J ON (J.EMPLOYEE_ID = E.EMPLOYEE_ID)
Однако, когда пытаюсь добавить условие WHERE, выбирающее самую раннюю дату (т.е. самую первая должность), выводится лишь одна должность, - которая стоит самой первой в списке, - и, следовательно, всё работает неправильно:
SELECT E.FIRST_NAME||' '||E.LAST_NAME EMP,
J.JOB_ID
FROM EMPLOYEES E
JOIN
(SELECT EMPLOYEE_ID,
JOB_ID,
START_DATE
FROM JOB_HISTORY A
WHERE A.START_DATE =
(SELECT MIN(START_DATE)
FROM JOB_HISTORY)) J ON (J.EMPLOYEE_ID = E.EMPLOYEE_ID)
Плюс ко всему, может быть, я вообще воюю не совсем туда, и подобный запрос надо реализовать иным образом (но как именно - не могу приложить ума).
Ниже показана структура тех двух таблиц, что джойнятся в самом запросе.

Ответы (1 шт):
SELECT DISTINCT
employees.first_name || ' ' || employees.last_name emp,
FIRST_VALUE(job_id) OVER (PARTITION BY employee_id ORDER BY start_date) job_id
FROM employees
JOIN job_history ON job_history.employee_id = employees.employee_id