Как найти сотрудников, нанятых менее десяти лет назад? - PullRequest
0 голосов
/ 02 ноября 2011

Я хочу написать запрос для отображения номера, фамилии, даты найма и количества месяцев, отработанных для всех сотрудников, проработавших менее 10 лет.

Это то, что у меня есть, ночто-то не так с функцией WHERE:

SELECT employee_id, last_name, hire_date, MONTHS_BETWEEN(SYSDATE, hire_date) "number of months employed" 
FROM employees
WHERE MONTHS_BETWEEN(SYSDATE, hire_date) <= 120;

PS: когда я запускаю ее без функции WHERE, за «количество использованных месяцев» я получаю 292.530207959976105137395459976105137395

, пожалуйста, помогите!:(

1 Ответ

3 голосов
/ 02 ноября 2011

"когда у меня есть" WHERE MONTHS_BETWEEN (SYSDATE, hire_date) <= 120; ", добавив и запустив его, я получу <code>no data found"

Это означает, что компанияне нанял ни одного сотрудника за последние десять лет.

"и когда я уберу 'WHERE MONTHS_BETWEEN (SYSDATE, hire_date) <= 120;` я получу результаты ВСЕХ сотрудников в таблицеи «количество занятых месяцев» даст мне 292,530207959976105137395459976105137395. "</p>

Вы используете таблицу, основанную на канонической таблице SCOTT.EMP, где все сотрудники были наняты в какой-то момент в 1980-х годах.

"Теперь, хотите найти людей, которые там работали менее 10 лет."

Вам нужно будет исправить свои данные.Попробуйте что-то вроде этого запроса.Около двадцати пяти лет он заработает у любого сотрудника, чей идентификатор заканчивается нечетной цифрой:

update employees
set hiredate = add_months(hiredate, 300)
where mod(employee_id,2)=1
/
...