powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последовательный подсчет разницы времени
12 сообщений из 12, страница 1 из 1
Последовательный подсчет разницы времени
    #39369990
Vargant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Есть таблица учета рабочего времени, in соответственно пришел, out ушел
Код: plsql
1.
2.
3.
4.
5.
6.
create table tt (event date not null, type varchar2(3 char) not null);

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 11:20', 'dd-mm-yyyy hh24:mi'), 'out');
insert into tt values(to_date('01-12-2016 12:00', 'dd-mm-yyyy hh24:mi'), 'in');
insert into tt values(to_date('01-12-2016 14:15', 'dd-mm-yyyy hh24:mi'), 'out');


Тут у нас получается человек находился на месте в сумме 2:45

Подскажите, как правильно сделать запрос такое запрос?

Самое неприятное, что in может не всегда присутствовать, тогда надо пропустить промежуточный out, например, если тут не будет третий записи (12:00), то нужно считать разницу между 10:50 и 14:15 ... но это уже как-то совсем жестко, и мне достаточно хотя бы первое условие ...

Заранее благодарен за любую помощь!
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39369994
Vargant,

lead/lag
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370009
Фотография mRdUKE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VargantСамое неприятное, что in может не всегда присутствовать, тогда надо пропустить промежуточный out..Т.е. «выход» у Вас как правило через «дверь», а вот «входят» по-разному? Что хотите подсчитать, «находился на месте» за день, за период? Войти могли вчера – выйти сегодня? Могли два раза (или больше) подряд войти или выйти, всё учли?
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370085
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vargant
Подскажите, как правильно сделать запрос такое запрос?


всю бизнес-логику вынеси на уровень трансформации данных, сделав табличку, в которой out строго после in, добавленные фиктивные out-in для перехода через 0 часов.
А дальше lead/lag
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370091
Vargant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mRdUKEТ.е. «выход» у Вас как правило через «дверь», а вот «входят» по-разному? Что хотите подсчитать, «находился на месте» за день, за период? Войти могли вчера – выйти сегодня? Могли два раза (или больше) подряд войти или выйти, всё учли?
Да, все эти кейсы нужно решить, и два входа подряд, или два выхода ... выход после 23:59 не учитывается и считается, что человек ушел в 23-59 ... бывает и выхода то нет, тогда считаем, что ушел в 19-00 ...
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370092
Vargant
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XMLerVargantПодскажите, как правильно сделать запрос такое запрос?


всю бизнес-логику вынеси на уровень трансформации данных, сделав табличку, в которой out строго после in, добавленные фиктивные out-in для перехода через 0 часов.
А дальше lead/lag
вот я уже склоняюсь к этому, т.к. просто нереально много кейсов ...
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370102
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vargant,
ну городи огород. тебе уже все сказали. сиди пробуй. lead/lag+case и отсечь на следующем шаге там где нулл.
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370289
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vargant..
Самое неприятное
..
насколько понимаю, у вас имеются проблемы с оборудованием (весьма вероятно, с аппаратной составляющей).
если это так, то анализ данных не имеет смысла до их (проблем) устранения
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370322
orawishнасколько понимаю, у вас имеются проблемы с оборудованиемЭто те проблемы, когда один открывает дверь и пятеро проходят :)
Такое аппаратно устраняется, но задорого - надо двери менять на турникеты
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370355
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не всё можно починить,

Или поставить примата с дубиной у двери
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39370359
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не всё можно починитьorawishнасколько понимаю, у вас имеются проблемы с оборудованиемЭто те проблемы, когда один открывает дверь и пятеро проходят :)
Такое аппаратно устраняется, но задорого - надо двери менять на турникеты
ага, ага, причем на такие турникеты,
у которых вероятность нефиксации события процентов не ~0.5 , а ~15
...
Рейтинг: 0 / 0
Последовательный подсчет разницы времени
    #39371163
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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% было
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Последовательный подсчет разницы времени
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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