Найти первую должность работника через 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 шт):

Автор решения: Akina

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
→ Ссылка