Проблема в том, что 'Month'
- строка - не годится для упорядочения, ну, в общем, месяцы.
SELECT TO_CHAR(hire_date, 'Month') AS "Month", COUNT(*) AS "Number of Hires"
FROM EMPLOYEES
WHERE EXTRACT(YEAR FROM SYSDATE) - EXTRACT(YEAR FROM HIRE_DATE) > 14
GROUP BY TO_CHAR(hire_date, 'Month')
ORDER BY EXTRACT(month FROM MIN(hire_date));
Обратите внимание, что вы не должны использовать арифметику для строк - это просто неоперация для строк, и вы хотите избежать неявного преобразования (потому что это может вызвать неожиданные проблемы).Итак, используйте встроенные функции для извлечения года.
Обратите внимание, что ваша логика на самом деле не сводится к тому, что «сотрудники были компанией как минимум 15 лет».Это будет:
WHERE hire_date < sysdate - interval '15' year