|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
Имеется: таблица подчиненности сотрудников: employee_id - идентификатор сотрудника manager_id - идентификатор руководителя start_date_inclusive - начало интервала дат (включительно, дата начала входит в интервал) end_date_exclusive - окончание интервала дат (исключительно, дата окончания не входит в интервал) Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Прошу помочь составить запрос, возвращающий записи с полями: employee_id - идентификатор сотрудника start_date_inclusive - начало интервала дат (включительно, дата начала входит в интервал) end_date_exclusive - окончание интервала дат (исключительно, дата окончания не входит в интервал) Записи должны для каждого сотрудника содержать интервалы дат, в течение которых набор руководителей (с учетом всей иерархии подчиненности) не менялся. Если в течение интервала дат у сотрудника не было руководителя, запись выводить не требуется. Должен получиться такой набор: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
Предполагается, что переназначение руководителя происходит приблизительно один раз в 100 дней. Сотрудников - 5000. Интервал, на котором осуществляется выборка - 5 лет. Большое спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 09:50 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
Неправдоподобная херня в исходных данных. Код: plsql 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 10:31 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
Приношу извинения, вкралась досадная ошибка Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30.
Спасибо за критику. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 11:04 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
соответственно, результат выполнения должен быть такой: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 11:06 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
medium Спасибо за критику. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 12:37 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
medium Записи должны для каждого сотрудника содержать интервалы дат, в течение которых набор руководителей (с учетом всей иерархии подчиненности) не менялся.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 12:53 |
|
Прошу помочь с составлением запроса.
|
|||
---|---|---|---|
#18+
А собственные потуги свелись к двум идеям, пока не реализованным: 1. Во временной таблице рассчитывать даты правления руководителей очередного уровня и так по циклу добавлять записи, пока руководители не закончатся. 2. Благо все интервалы выравнены на границу дат, создать шкалу дат и рассчитывать sys_connect_by_path, потом оставить те даты, где sys_connect_by_path изменился по сравнению со вчерашней и получить результат. Обязательно напишу, когда будет результат. Было подозрение, что задача тривиальная, а я просто не догоняю...Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2019, 15:53 |
|
|
start [/forum/topic.php?fid=52&fpage=58&tid=1881738]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
37ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 138ms |
0 / 0 |