Задание критерия аналитической функции в sql - PullRequest
0 голосов
/ 29 января 2020

У меня есть следующие столбцы в таблице:

Department_id,
employee_id,
hire_date,
fire_date.

Вот пример данных. Я ищу любой краткий и оптимальный код для соответствия датам приема на работу и датам увольнения различных сотрудников в каждом отделе. В приведенных ниже примерах данных дата найма 4-го сотрудника равна дате увольнения 3-го сотрудника и дате увольнения 5-го сотрудника, поэтому эти сотрудники сопоставляются, и в столбце индикатора указывается, совпадают ли с датой его приема на работу или датой увольнения. Шестой сотрудник не подходит, потому что он не находится в одном отделе с другими сотрудниками, хотя его fire_date также равен «2019-05-25». 1-й и 2-й сотрудники не совпадают, потому что они имеют одинаковую дату hire_date, между датой увольнения и датой найма нет совпадения. 1-й сотрудник также не привязан к самому себе, поскольку сопоставление возможно только между разными сотрудниками.

Редактировать : если один сотрудник сопоставляется как на hire_date, так и в fire_date, тогда может быть указано другое имя используется как 'fire_and_hire' в столбце индикатора.

create table employees 
(dep_id char(3),
 emp_id int,
 hire_date date,
 fire_date date);

insert into employees values('A1',1, TO_DATE('2019-05-04','YYYY-MM-DD'), TO_DATE('2019-05-04','YYYY-MM-DD'));
insert into employees values('A1',2, TO_DATE('2019-05-04','YYYY-MM-DD'), null);
insert into employees values('A1',3, TO_DATE('2019-05-20','YYYY-MM-DD'), TO_DATE('2019-05-25','YYYY-MM-DD'));
insert into employees values('A1',4, TO_DATE('2019-05-25','YYYY-MM-DD'), TO_DATE('2019-08-30','YYYY-MM-DD'));
insert into employees values('A1',5, TO_DATE('2019-04-01','YYYY-MM-DD'), TO_DATE('2019-05-25','YYYY-MM-DD'));
insert into employees values('A2',6, TO_DATE('2019-04-05','YYYY-MM-DD'), TO_DATE('2019-05-25','YYYY-MM-DD'));

commit;
--expected output:
    DEP_ID  EMP_ID  HIRE_DATE   FIRE_DATE  indicator_column
    A1      1       04-MAY-19   04-MAY-19  -
    A1      2       04-MAY-19    -         -
    A1      3       20-MAY-19   25-MAY-19  fire
    A1      4       25-MAY-19   30-AUG-19  hire
    A1      5       01-APR-19   25-MAY-19  fire
    A2      6       05-APR-19   25-MAY-19  -
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...