powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Контроль регламентного времени запросом (расписание)
35 сообщений из 35, показаны все 2 страниц
Контроль регламентного времени запросом (расписание)
    #39917271
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, подскажите, пжл с идеей или запросом.

Есть таблица files с 4 полями - id, type, time, parid
Id - это айди файла (строки)
Type -это тип файла - один из двух или Query или Answer
Time - время прихода звпроса или сформированного ответа
Parid - у файлов ответа проставляются соответсвующие id файлов запроса

Известно, что регламентное время формирования 1 файла ответа - 10 минут без учета очереди.
Ответы готовятся по очереди по времени поступления запросов

Нужно запросом выделить те файлы ответов, которые сформированы с нарушением срока.

Например, если в 11:00 одновременно поступило 3 файла запроса, то первый ответ должен быть до 11:10, второй-до 11:20, третий - до 11:30 и т.д.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917288
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Нужно запросом выделить те файлы ответов, которые сформированы с нарушением срока.
Не умеешь делать self-join и арифметикой дат и интервалов не владеешь?
(o-O)
Type -это тип файла - один из двух или Query или Answer
Не нужен. Достаточно Parid.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917306
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Можно поподробней?)
Таблицу с собой же пересек, получил время для каждого ответа с момента времени файла запроса.
Контролирую его с произведением 10 минут на количество запросов полученных за последние 10 минуты для конкретного запроса.
Но дырка в том, что если какой то новый запрос пришел позже яем через 10 минут и к этому времени еще не все ответы сформировались..
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917315
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Можно поподробней?)
Нельзя. Ибо недочитал.
Предоставь тестовые данные в удобной для использования форме. И желаемый результат на них.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917345
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

Очередь в один момент времени может обрабатывать один файл?
Тогда начало обработки каждого файла либо время его прихода либо время завершения одного из предыдущих (если обработчик занят на премя прихода).
Соответственно для каждого файла ищешь ту строку когда он начал обрабатываться.

(o-O)
Например, если в 11:00 одновременно поступило 3 файла запроса, то первый ответ должен быть до 11:10, второй-до 11:20, третий - до 11:30 и т.д.
А если первый ответ пришел в 11:50, второй в 11:51, третий в 11:52? Второй и третий ОК?

(o-O)
Например, если в 11:00 одновременно поступило 3 файла запроса, то первый ответ должен быть до 11:10, второй-до 11:20, третий - до 11:30 и т.д.
Если пять файлов пришли в 10:50, и последний из них был обработан в 12:00, то для первого из поступивших в 11:00 допустимое время 12:10?
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917358
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег
(o-O)
Например, если в 11:00 одновременно поступило 3 файла запроса, то первый ответ должен быть до 11:10, второй-до 11:20, третий - до 11:30 и т.д.
А если первый ответ пришел в 11:50, второй в 11:51, третий в 11:52? Второй и третий ОК?
Суть задачи, как я её понимаю, в составлении регламента ответов на основании запросов, а для этого сами ответы не нужны (только если для упорядочивания одновременных запросов):
ЗапросРегаментный ответ11:0011:1011:0211:2011:0511:3011:2811:4011:4311:53
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917370
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Судя по примеру ТС учитывается время прихода, порядок прихода и соответственно загрузка очереди.
Вот только при проставлении "должен быть" у него не учтено время обработки предыдущих. Это странно.

В любом случае скорее всего решается однопроходной моделью, а взависимости от деталей может и аналитикой. :)
Но мы можем только гадать что именно требуется.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917373
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот мой запрос

Косяк в том, что та строчка , которая выбирается , по смыслу не нарушение, т.к.там очередь из файлов и на каждый из них есть 10 минут.
Код: 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.
with files AS
(
select '1' as id, 'query_1' as name, TO_DATE('22.01.2020 11:00:00','DD.MM.YYYY hh24:mi:ss') dt, '7'  as par_id from dual union all
select '2' as id, 'query_2' as name, TO_DATE('22.01.2020 11:30:01','DD.MM.YYYY hh24:mi:ss'), '8'  as par_id from dual union all
select '3' as id, 'query_3' as name, TO_DATE('22.01.2020 11:30:02','DD.MM.YYYY hh24:mi:ss'), '9'  as par_id from dual union all
select '4' as id, 'query_4' as name, TO_DATE('22.01.2020 11:30:03','DD.MM.YYYY hh24:mi:ss'), '10'  as par_id from dual union all
select '5' as id, 'query_5' as name, TO_DATE('22.01.2020 11:30:04','DD.MM.YYYY hh24:mi:ss'), '11'  as par_id from dual union all
select '6' as id, 'query_6' as name, TO_DATE('22.01.2020 11:50:05','DD.MM.YYYY hh24:mi:ss'), '12'  as par_id from dual union all

select '7' as id, 'answer_1' as name, TO_DATE('22.01.2020 11:07:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual union all
select '8' as id, 'answer_2' as name, TO_DATE('22.01.2020 11:37:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual union all
select '9' as id, 'answer_3' as name, TO_DATE('22.01.2020 11:44:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual union all
select '10' as id, 'answer_4' as name, TO_DATE('22.01.2020 11:51:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual union all
select '11' as id, 'answer_5' as name, TO_DATE('22.01.2020 11:58:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual union all
select '12' as id, 'answer_6' as name, TO_DATE('22.01.2020 12:05:00','DD.MM.YYYY hh24:mi:ss'), null  as par_id from dual
)
SELECT *
FROM (
    SELECT a.id, a.name, a.dt answ_dt,q.dt query_dt,
           ROUND((a.dt - q.dt)*24*60) AS time_delta,--разница времен ответа и запроса
           10 * (SELECT count(*) FROM files b WHERE  b.name LIKE 'query%' AND b.dt BETWEEN q.dt-10/(24*60) AND q.dt) AS lim_value -- 10 минут * количество полученных неотвеченных запросов до текущего       
    FROM files q,
         files a
    WHERE q.name LIKE 'query%'
    AND a.name LIKE 'answer%'
    AND q.par_id = a.id   
)
WHERE time_delta > lim_value
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917377
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег
В любом случае скорее всего решается однопроходной моделью
Тут должен хорошо пригодиться match_recognize для разбиения на группы, когда была очередь.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917391
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

Почему у тебя вопрос имеет ссылку на ответ, ответ появился раньше вопроса?
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917397
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
После того, как сформировался ответ - у вопроса проставляется ссылка на его ответ.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917409
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

признак наличия очереди, разрыв более 10 минут как здесь 22064462 или
еще нужно учитывать время реального ответа и брать худший их результатов.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917422
iOracleDev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

Например, первый запрос 11:00 ответ в 11:03, регламентный ответ 11:10,
второй запрос 11:05, регламентный ответ 11:15 или 11:20,
если если реальный ответ на первый запрос поступил не в 11:03, а в 11:07,
то ответ на второй должен быть дан до 11:15, 11:17 или 11:20?
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917424
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

в 11:00 поступило 5 запросов, на все пять ответили за 35минут (все линии свободны)
в 11:40 приходит запрос, каков крайний срок ответа?

....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917434
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
with files as
(
select '1' as id, 'query_1' as name, TO_DATE('22.01.2020 11:00:00','DD.MM.YYYY hh24:mi:ss') dt, '7'  as par_id from dual union all
select '2' as id, 'query_2' as name, TO_DATE('22.01.2020 11:30:01','DD.MM.YYYY hh24:mi:ss'), '8'  as par_id from dual union all
select '3' as id, 'query_3' as name, TO_DATE('22.01.2020 11:30:02','DD.MM.YYYY hh24:mi:ss'), '9'  as par_id from dual union all
select '4' as id, 'query_4' as name, TO_DATE('22.01.2020 11:30:03','DD.MM.YYYY hh24:mi:ss'), '10'  as par_id from dual union all
select '5' as id, 'query_5' as name, TO_DATE('22.01.2020 11:30:04','DD.MM.YYYY hh24:mi:ss'), '11'  as par_id from dual union all
select '6' as id, 'query_6' as name, TO_DATE('22.01.2020 11:50:05','DD.MM.YYYY hh24:mi:ss'), '12'  as par_id from dual
)
select * from files
  match_recognize
  ( order by dt
    measures
      strt.dt + count(*) * interval '10' minute as last_term
    all rows per match
    pattern (strt queue*)
    define
      queue as dt < strt.dt + count(queue.*) * interval '10' minute
  )
;

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
DT                LAST_TERM         I NAME    PA
----------------- ----------------- - ------- --
22.01.20 11:00:00 22.01.20 11:10:00 1 query_1 7
22.01.20 11:30:01 22.01.20 11:40:01 2 query_2 8
22.01.20 11:30:02 22.01.20 11:50:01 3 query_3 9
22.01.20 11:30:03 22.01.20 12:00:01 4 query_4 10
22.01.20 11:30:04 22.01.20 12:10:01 5 query_5 11
22.01.20 11:50:05 22.01.20 12:20:01 6 query_6 12
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917442
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

11:50 так как к времени этого запроса все предыдущие заппрсы и ответы уже сформированы
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917443
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Elic,

Сппчибо! Интересное решение, похоже на правду!! Буду пробовать)
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917469
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Elic,

Сппчибо! Интересное решение, похоже на правду!! Буду пробовать)

7 и 11 просрочка?


Код: 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.
with files as
(
select 'Q' Type ,'1' as id, 'query_1' as name, TO_DATE('22.01.2020 11:00:00','DD.MM.YYYY hh24:mi:ss') dt, '61'  as par_id from dual union all
select 'Q','2' as id, 'query_2' as name, TO_DATE('22.01.2020 11:00:01','DD.MM.YYYY hh24:mi:ss'), '62'  as par_id from dual union all
select 'Q','3' as id, 'query_3' as name, TO_DATE('22.01.2020 11:00:02','DD.MM.YYYY hh24:mi:ss'), '63'  as par_id from dual union all
select 'Q','4' as id, 'query_4' as name, TO_DATE('22.01.2020 11:00:03','DD.MM.YYYY hh24:mi:ss'), '64'  as par_id from dual union all
select 'Q','5' as id, 'query_5' as name, TO_DATE('22.01.2020 11:00:04','DD.MM.YYYY hh24:mi:ss'), '65'  as par_id from dual union all
select 'A','61' as id, 'a_1' as name, TO_DATE('22.01.2020 11:05:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','62' as id, 'a_2' as name, TO_DATE('22.01.2020 11:15:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','63' as id, 'a_3' as name, TO_DATE('22.01.2020 11:25:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','64' as id, 'a_4' as name, TO_DATE('22.01.2020 11:26:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','65' as id, 'a_5' as name, TO_DATE('22.01.2020 11:30:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','7' as id, 'query_7' as name, TO_DATE('22.01.2020 11:30:00','DD.MM.YYYY hh24:mi:ss'), '8'  as par_id from dual union all --просрочка
select 'A','8' as id, 'a_7' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all 
select 'Q','9' as  id, 'q_9' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','10' as id, 'q_10' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','11' as id, 'q_11' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), '12'  as par_id from dual union all --просрочка
select 'A','12' as id, 'a_11' as name, TO_DATE('22.01.2020 12:20:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual  
)
select * from files
  match_recognize
  ( order by dt
    measures
      strt.dt + count(*) * interval '10' minute as last_term
    all rows per match
    pattern (strt queue*)
    define
      queue as dt < strt.dt + count(queue.*) * interval '10' minute
  )



ps
тип файла нужен чтоб отличить ответы от запросов без ответа

.....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917474
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,

перестарался
select 'A','65' as id, 'a_5' as name, TO_DATE('22.01.2020 11: 27 :05','DD.MM.YYYY hh24:mi:ss'), '' as par_id from dual union all

на все запросы поступил ответ до 11:30:00
.....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917478
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
тип файла нужен чтоб отличить ответы от запросов без ответа
После того, как ты свалил всё в одну кучу, тебе это уже не поможет.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917926
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые, а есть ли аналогичное match_recognize решение для 11й версии оракла?)
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917933
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
аналогичное match_recognize
Такого не бывает.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917943
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

если я правилно понял задачу, то

1) ищем время закрытия заявки
2) для каждого заказа, суммируем незакрытые заявки которые пришли раньше
3) регламентное время равно Time+п2*10мин
4) выставляем флажок если фактическое фремя>регламентного

рісовать запрос?

ps
надо уточнить постановку

> Parid - у файлов ответа проставляются соответсвующие id файлов запроса

> После того, как сформировался ответ - у вопроса проставляется ссылка на его ответ.

.....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917948
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Уважаемые, а есть ли аналогичное match_recognize решение для 11й версии оракла?)

Конечно.
Специализированная конвейерная функция.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917967
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Уважаемые, а есть ли аналогичное match_recognize решение для 11й версии оракла?)
Цель SQL-но повторить логику Элика?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select id, name, dt, strt + cnt * interval '10' minute as last_term 
from files
model
dimension by (row_number() over (order by id) id)
measures (name, dt, cast(null as date) strt, 0 cnt)
rules iterate (1e9) until dt[iteration_number + 2] is null
(
  strt[iteration_number + 1] = case when strt[cv()-1] + (cnt[cv()-1]+1) * interval '10' minute > dt[cv()] then strt[cv()-1] else dt[cv()] end,
  cnt[iteration_number + 1] = decode(strt[cv()-1], strt[cv()], cnt[cv()-1]+1, 1)
)
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917988
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег,

Спасибо! Да, ваш результат совпал с приведенным выше.
Теперь осталомь изучить model dimension..))
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39917996
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
рісовать запрос?
21688712
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918004
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O),

автортак как к времени этого запроса все предыдущие заппрсы и ответы уже сформированы

для 07 query_7 11:30:00 время просрочки 11:40:00?


Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
with files as
(
select 'Q' Type ,'01' as id, 'query_1' as name, TO_DATE('22.01.2020 11:00:00','DD.MM.YYYY hh24:mi:ss') dt, '61'  as par_id from dual union all
select 'Q','02' as id, 'query_2' as name, TO_DATE('22.01.2020 11:00:01','DD.MM.YYYY hh24:mi:ss'), '62'  as par_id from dual union all
select 'Q','03' as id, 'query_3' as name, TO_DATE('22.01.2020 11:00:02','DD.MM.YYYY hh24:mi:ss'), '63'  as par_id from dual union all
select 'Q','04' as id, 'query_4' as name, TO_DATE('22.01.2020 11:00:03','DD.MM.YYYY hh24:mi:ss'), '64'  as par_id from dual union all
select 'Q','05' as id, 'query_5' as name, TO_DATE('22.01.2020 11:00:04','DD.MM.YYYY hh24:mi:ss'), '65'  as par_id from dual union all
select 'A','61' as id, 'a_1' as name, TO_DATE('22.01.2020 11:05:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','62' as id, 'a_2' as name, TO_DATE('22.01.2020 11:15:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','63' as id, 'a_3' as name, TO_DATE('22.01.2020 11:25:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','64' as id, 'a_4' as name, TO_DATE('22.01.2020 11:26:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','65' as id, 'a_5' as name, TO_DATE('22.01.2020 11:25:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','07' as id, 'query_7' as name, TO_DATE('22.01.2020 11:30:00','DD.MM.YYYY hh24:mi:ss'), '8'  as par_id from dual union all --просрочка
select 'A','08' as id, 'a_7' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','09' as  id, 'q_9' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','10' as id, 'q_10' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','11' as id, 'q_11' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), '12'  as par_id from dual union all --просрочка
select 'A','12' as id, 'a_11' as name, TO_DATE('22.01.2020 12:20:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual
)



......
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918009
Фотография Кобанчег
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Кобанчег,

Спасибо! Да, ваш результат совпал с приведенным выше.
Теперь осталомь изучить model dimension..))
Ты бы лучше тему читал не по диагонали и отвечал на вопросы.
Не смущает что в решениях никак не используется время отватов?
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918029
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег,

Врепя ответов не важно.
Вашим запросом я составлю регласентное время ответов для каждого запроса с учетом очередей, а уже после пересеку эту выборку с ответами и определю какие ответы уложились в регламент а какие его пробили.
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918039
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax
(o-O),

автортак как к времени этого запроса все предыдущие заппрсы и ответы уже сформированы


для 07 query_7 11:30:00 время просрочки 11:40:00?


[
[/src]

......
stax


Да
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918044
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Кобанчег,

Врепя ответов не важно.


как ето не важно?

Stax
(o-O),

в 11:00 поступило 5 запросов, на все пять ответили за 35минут (все линии свободны)
в 11:40 приходит запрос, каков крайний срок ответа?

....
stax


(o-O)
Stax,

11:50 так как к времени этого запроса все предыдущие заппрсы и ответы уже сформированы


как Вы получите 11:50 без учета времени ответа?
....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918047
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
(o-O)
Stax
(o-O),

пропущено...


для 07 query_7 11:30:00 время просрочки 11:40:00?


[
[/src]

......
stax



Да


тогда надо учитивать время погашения
влоб

Код: 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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
with files as
(
select 'Q' Type ,'01' as id, 'query_1' as name, TO_DATE('22.01.2020 11:00:00','DD.MM.YYYY hh24:mi:ss') dt, '61'  as par_id from dual union all
select 'Q','02' as id, 'query_2' as name, TO_DATE('22.01.2020 11:00:01','DD.MM.YYYY hh24:mi:ss'), '62'  as par_id from dual union all
select 'Q','03' as id, 'query_3' as name, TO_DATE('22.01.2020 11:00:02','DD.MM.YYYY hh24:mi:ss'), '63'  as par_id from dual union all
select 'Q','04' as id, 'query_4' as name, TO_DATE('22.01.2020 11:00:03','DD.MM.YYYY hh24:mi:ss'), '64'  as par_id from dual union all
select 'Q','05' as id, 'query_5' as name, TO_DATE('22.01.2020 11:00:04','DD.MM.YYYY hh24:mi:ss'), '65'  as par_id from dual union all
select 'A','61' as id, 'a_1' as name, TO_DATE('22.01.2020 11:05:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','62' as id, 'a_2' as name, TO_DATE('22.01.2020 11:15:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','63' as id, 'a_3' as name, TO_DATE('22.01.2020 11:25:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','64' as id, 'a_4' as name, TO_DATE('22.01.2020 11:26:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'A','65' as id, 'a_5' as name, TO_DATE('22.01.2020 11:25:05','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','07' as id, 'query_7' as name, TO_DATE('22.01.2020 11:30:00','DD.MM.YYYY hh24:mi:ss'), '8'  as par_id from dual union all --просрочка
select 'A','08' as id, 'a_7' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','09' as  id, 'q_9' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','10' as id, 'q_10' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual union all
select 'Q','11' as id, 'q_11' as name, TO_DATE('22.01.2020 11:45:00','DD.MM.YYYY hh24:mi:ss'), '12'  as par_id from dual union all --просрочка
select 'A','12' as id, 'a_11' as name, TO_DATE('22.01.2020 12:20:00','DD.MM.YYYY hh24:mi:ss'), ''  as par_id from dual
)
,f as (
select f1.*
,f2.dt dt_answer
--,rownum rw --rowid
 from files f1,files f2
where f2.id(+)=f1.par_id 
)
select q.* 
,decode(q.type,'Q',q.dt+
 (select count(*) 
  from f 
  where q.type='Q' and f.type='Q' 
   and f.dt<=q.dt 
   and f.id<=q.id --rowid
   and (dt_answer>q.dt or dt_answer is null)
  )*1/24/6) last_term
from f q --files q
order by q.dt,q.id
/
T ID NAME    DT       PA DT_ANSWE LAST_TER
- -- ------- -------- -- -------- --------
Q 01 query_1 11:00:00 61 11:05:05 11:10:00
Q 02 query_2 11:00:01 62 11:15:05 11:20:01
Q 03 query_3 11:00:02 63 11:25:05 11:30:02
Q 04 query_4 11:00:03 64 11:26:05 11:40:03
Q 05 query_5 11:00:04 65 11:25:05 11:50:04
A 61 a_1     11:05:05
A 62 a_2     11:15:05
A 63 a_3     11:25:05
A 65 a_5     11:25:05
A 64 a_4     11:26:05
Q 07 query_7 11:30:00 8           11:40:00
A 08 a_7     11:45:00
Q 09 q_9     11:45:00             12:05:00
Q 10 q_10    11:45:00             12:15:00
Q 11 q_11    11:45:00 12 12:20:00 12:25:00
A 12 a_11    12:20:00

16 rows selected.



.....
stax
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918264
(o-O)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кобанчег
(o-O)
Уважаемые, а есть ли аналогичное match_recognize решение для 11й версии оракла?)
Цель SQL-но повторить логику Элика?

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select id, name, dt, strt + cnt * interval '10' minute as last_term 
from files
model
dimension by (row_number() over (order by id) id)
measures (name, dt, cast(null as date) strt, 0 cnt)
rules iterate (1e9) until dt[iteration_number + 2] is null
(
  strt[iteration_number + 1] = case when strt[cv()-1] + (cnt[cv()-1]+1) * interval '10' minute > dt[cv()] then strt[cv()-1] else dt[cv()] end,
  cnt[iteration_number + 1] = decode(strt[cv()-1], strt[cv()], cnt[cv()-1]+1, 1)
)



А вы могли бы поделиться документацией, по которой составили этот запрос?
Я хочу добавить условие, чтобы данная проверка и подсчет велись в рамках дня, то есть типа partition by trunc(dt)..
...
Рейтинг: 0 / 0
Контроль регламентного времени запросом (расписание)
    #39918279
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
35 сообщений из 35, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Контроль регламентного времени запросом (расписание)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]