|
|
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Добрый день! Есть таблица учета рабочего времени, in соответственно пришел, out ушел Код: plsql 1. 2. 3. 4. 5. 6. Тут у нас получается человек находился на месте в сумме 2:45 Подскажите, как правильно сделать запрос такое запрос? Самое неприятное, что in может не всегда присутствовать, тогда надо пропустить промежуточный out, например, если тут не будет третий записи (12:00), то нужно считать разницу между 10:50 и 14:15 ... но это уже как-то совсем жестко, и мне достаточно хотя бы первое условие ... Заранее благодарен за любую помощь! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:22 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Vargant, lead/lag ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:25 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
VargantСамое неприятное, что in может не всегда присутствовать, тогда надо пропустить промежуточный out..Т.е. «выход» у Вас как правило через «дверь», а вот «входят» по-разному? Что хотите подсчитать, «находился на месте» за день, за период? Войти могли вчера – выйти сегодня? Могли два раза (или больше) подряд войти или выйти, всё учли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 12:36 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Vargant Подскажите, как правильно сделать запрос такое запрос? всю бизнес-логику вынеси на уровень трансформации данных, сделав табличку, в которой out строго после in, добавленные фиктивные out-in для перехода через 0 часов. А дальше lead/lag ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 13:32 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
mRdUKEТ.е. «выход» у Вас как правило через «дверь», а вот «входят» по-разному? Что хотите подсчитать, «находился на месте» за день, за период? Войти могли вчера – выйти сегодня? Могли два раза (или больше) подряд войти или выйти, всё учли? Да, все эти кейсы нужно решить, и два входа подряд, или два выхода ... выход после 23:59 не учитывается и считается, что человек ушел в 23-59 ... бывает и выхода то нет, тогда считаем, что ушел в 19-00 ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 13:38 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
XMLerVargantПодскажите, как правильно сделать запрос такое запрос? всю бизнес-логику вынеси на уровень трансформации данных, сделав табличку, в которой out строго после in, добавленные фиктивные out-in для перехода через 0 часов. А дальше lead/lag вот я уже склоняюсь к этому, т.к. просто нереально много кейсов ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 13:38 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Vargant, ну городи огород. тебе уже все сказали. сиди пробуй. lead/lag+case и отсечь на следующем шаге там где нулл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 13:47 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Vargant.. Самое неприятное .. насколько понимаю, у вас имеются проблемы с оборудованием (весьма вероятно, с аппаратной составляющей). если это так, то анализ данных не имеет смысла до их (проблем) устранения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 15:26 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
orawishнасколько понимаю, у вас имеются проблемы с оборудованиемЭто те проблемы, когда один открывает дверь и пятеро проходят :) Такое аппаратно устраняется, но задорого - надо двери менять на турникеты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 15:51 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Не всё можно починить, Или поставить примата с дубиной у двери ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:18 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Не всё можно починитьorawishнасколько понимаю, у вас имеются проблемы с оборудованиемЭто те проблемы, когда один открывает дверь и пятеро проходят :) Такое аппаратно устраняется, но задорого - надо двери менять на турникеты ага, ага, причем на такие турникеты, у которых вероятность нефиксации события процентов не ~0.5 , а ~15 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2016, 16:23 |
|
||
|
Последовательный подсчет разницы времени
|
|||
|---|---|---|---|
|
#18+
Vargant, надо разобратся с отсутствующими записями напр insert into tt values(to_date('01-12-2016 10:50', 'dd-mm-yyyy hh24:mi'), 'in'); insert into tt values(to_date('01-12-2016 17:20', 'dd-mm-yyyy hh24:mi'), 'out'); а оказывается что нет insert into tt values(to_date('01-12-2016 11:20', 'dd-mm-yyyy hh24:mi'), 'out'); insert into tt values(to_date('01-12-2016 14:00', 'dd-mm-yyyy hh24:mi'), 'in'); как тогда? сначала надо добітся пар in/out, тогда уже просто если ето действительно "турникет", сначала выдайте ведомость нестыковок, пусть разбираются, заодно опишут алгоритм ps задача упрощается если чел не может работать через 24:00 зии на форуме 100% было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2016, 15:59 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39371163&tid=1886783]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
163ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 452ms |

| 0 / 0 |
