Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как лучше определить время простоя/работы / 6 сообщений из 6, страница 1 из 1
17.11.2017, 10:46
    #39554903
Анчоус_ТТТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
Добрый день! подскажите, пожалуйста, как лучше реализовать учет времени простоя/работы, при следующей структуре
есть таблица логирования, по типу

logw
n_строки тип_операции пользовательвремя 1 1[вход] user1 17.11.2017 10:33:22 2 2[действие] user1 17.11.2017 10:36:22 3 3[выход] user1 17.11.2017 10:37:22 .................. 5 1[вход] user1 17.11.2017 10:38:22

результат предполагается в другой таблице, по типу
rezult
n_строки пользовательвремя_работы время_простоя 1 user1 4 1

любая критика приветствуется, возможно кто-то сталкивался с аналогичной задачей, и есть мнение как это лучше реализовать.

спасибо.
...
Рейтинг: 0 / 0
17.11.2017, 11:13
    #39554925
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
Анчоус_ТТТ,
Начни отсюда:
Студентам, желающим помощи
Здесь не водятся Тостые фейи програмирования
Чтобы тебе помогли, нужно показать что ты что-то сделал сам.
Подготовить тестовые данные и свой шедевр, с точным описанием чего хочется и что не получается
Удобнее в виде
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
-- генерация тестовых данных
with logw(rn,op,user,mytime) as (
select 1,1,'user1',to_date('17.11.2017 10:33:22','DD.MM.YYYY HH24:MI:SS') from dual union all
select 2,2,'user1',to_date('17.11.2017 10:36:22','DD.MM.YYYY HH24:MI:SS') from dual union all
...
)
-- другие таблицы если нужно
, rezult (rn,user,timew,timei) as (
select 1,'user1',4,1 from dual union all
... 
)
-- то что получилось у тебя
select ...



например, в каких единицах 4,1?
...
Рейтинг: 0 / 0
17.11.2017, 11:25
    #39554938
Анчоус_ТТТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
Vadim LejninАнчоус_ТТТ,
Начни отсюда:
Студентам, желающим помощи
Здесь не водятся Тостые фейи програмирования
Чтобы тебе помогли, нужно показать что ты что-то сделал сам.
Подготовить тестовые данные и свой шедевр, с точным описанием чего хочется и что не получается
Удобнее в виде
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
-- генерация тестовых данных
with logw(rn,op,user,mytime) as (
select 1,1,'user1',to_date('17.11.2017 10:33:22','DD.MM.YYYY HH24:MI:SS') from dual union all
select 2,2,'user1',to_date('17.11.2017 10:36:22','DD.MM.YYYY HH24:MI:SS') from dual union all
...
)
-- другие таблицы если нужно
, rezult (rn,user,timew,timei) as (
select 1,'user1',4,1 from dual union all
... 
)
-- то что получилось у тебя
select ...



например, в каких единицах 4,1?
минуты.

спасибо, у меня нет цели получить готовое решение, достаточно критического взгляда, концептуально.
опять же, возможно, кто-то решал, что-то подобное, и готов поделится своими соображениями как в плане архитектуры, так и в плане реализации.
...
Рейтинг: 0 / 0
17.11.2017, 11:34
    #39554952
Vadim Lejnin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
Анчоус_ТТТ,

поиск по сумма интервалов
...
Рейтинг: 0 / 0
17.11.2017, 11:39
    #39554956
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
Если речь не об учебной задаче, то первая проблема - факт выхода может не быть зафиксирован.
Как минимум, необходимо добавить "автовыход" по какому-либо набору правил (таймаут, конец рабочего дня и т.п.)
Если вопрос о том, как собрать - то либо поищите по форуму миллион примеров применения start_of_group, либо pl/sql.
Если версия позволяет - то https://docs.oracle.com/database/121/DWHSG/pattern.htm#DWHSG8956
Также можно решить рекурсивным with subquery factoring, connect by и самосоединением.
...
Рейтинг: 0 / 0
17.11.2017, 12:06
    #39554993
Анчоус_ТТТ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как лучше определить время простоя/работы
andrey_anonymousЕсли речь не об учебной задаче, то первая проблема - факт выхода может не быть зафиксирован.
Как минимум, необходимо добавить "автовыход" по какому-либо набору правил (таймаут, конец рабочего дня и т.п.)
Если вопрос о том, как собрать - то либо поищите по форуму миллион примеров применения start_of_group, либо pl/sql.
Если версия позволяет - то https://docs.oracle.com/database/121/DWHSG/pattern.htm#DWHSG8956
Также можно решить рекурсивным with subquery factoring, connect by и самосоединением.
спасибо, то, что нужно
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / как лучше определить время простоя/работы / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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