| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Firebird, Interbase > IBExpert. Вычисление среднего значения за час |
| Автор: neweraser 27.3.2018, 10:23 |
| Добрый день! Подскажите пожалуйста, как в IBExpert сделать процедуру в базе, которая возвращает среднее значение работы сотрудника за час? Имеется таблица вида: USER_ID T_START T_STOP Сотрудник 1 26.03.2018 11:24:11 26.03.2018 11:27:48 Сотрудник 1 26.03.2018 11:27:53 26.03.2018 11:31:54 Сотрудник 1 26.03.2018 11:31:54 26.03.2018 11:42:50 Сотрудник 1 26.03.2018 12:59:00 26.03.2018 13:24:00 Где T_START - начало работы, T_STOP соответственно конец. В итоге нужно получить таблицу следующего вида: USER_ID 10:00-11:00 11:00-12:00 12:00-13:00 13:00-14:00 и так до 18:00 Сотрудник1 0 ~18/60 1/60 24/60 |
| Автор: Akella 27.3.2018, 11:33 |
| используй группировку и AVG |
| Автор: neweraser 27.3.2018, 11:51 |
Гугл тоже так говорит Я понимаю, что надо сидеть и читать мануалы и разбираться, но может есть какое-то готовое решение? |
| Автор: Akina 27.3.2018, 12:20 |
Поспрошай тех студентов, кто сдавал это задание в прошлом году... |
| Автор: neweraser 27.3.2018, 12:55 | ||
Найти бы еще этих студентов
вот этот код не работает, нули выдает |
| Автор: Akella 27.3.2018, 15:08 |
Пока не совсем понятно: ты не знаешь, какие кнопки нажать в IBExpert или ты не можешь SQL запрос составить? Это в корне разные вещи. |
| Автор: neweraser 27.3.2018, 15:30 |
| Akella, мне нужно сделать процедуру в IBExpert, на входе дата и ид сотрудника, на выходе почасовая статистика |
| Автор: Akella 27.3.2018, 15:46 |
| Сперва составь SQL запрос, а потом уже обернёшь его в процедуру. Добавлено через 1 минуту и 55 секунд я не пойму пока, зачем тебе и зачем тебе тебе же надо вычитать? т.е. математические операции с датами http://firebirdsql.su/doku.php?id=matematicheskie_operacii_s_datoj |
| Автор: neweraser 28.3.2018, 12:41 | ||
У меня получилось пока только так
но считает не совсем верно. Мне нужно считать время в час, даже если Time_begin было с 8 утра, т.е. сотрудники ходят на перерывы - соответственно меняют статус, а в данном случае запрос выбирает значения Time_begin и Time_end в пределах одного часа, если нет совпадений, то выводит null... |
| Автор: neweraser 29.3.2018, 08:52 |
| Нет никаких идей? Неделю бьюсь уже |
| Автор: neweraser 30.3.2018, 08:44 | ||||||||
На текущий момент имею такое решение:
Все считает, но за текущие сутки, а мне нужно с 8 утра выбранного дня (входная переменная :Д) до 8 утра следующего дня. Условие WHERE прописал, но все равно как надо не работает. Нужно вычитать не часы TIME, а даты TIMESTAMP. Попробовал заменить код
на
Не запускается процедура, выдает ошибку:
Странно, я ж не пытаюсь разделить строку. |