Size: a a a

2021 August 30

VP

Vasili Pinchuk in MySQL
вручную досчитывать на клиенте
источник

VP

Vasili Pinchuk in MySQL
вытянуть все интервалы и досчитывать
источник

A

Art in MySQL
у меня вопрос был можно ли посредствам SQL)
источник

IZ

Ilia Zviagin in MySQL
А что за условия join такие с константами?
источник

H

HVV in MySQL
Ребят, вопрос, есть таблица в ней 2 колонки (start и finish) как можно посчитать разницу, но главное вывести только минимальную??????
источник

A

Art in MySQL
В общем самый простой вариант что я придумал это записывать дату в виде числа (unix time)
А начальную и конечную дату периодов тоже в этом же формате.
Суммируем между собой все статусы с 1 и отдельно все статусы с 0
Сумму вторых вычитаем из суммы первых и получаем время в секундах
источник

IZ

Ilia Zviagin in MySQL
Тебе надо сначала выделить последовательные интервалы работы человека. Это не реляционная задача в принципе.
Решается в СУБД курсором с пробегом по таблице по порядку времени. Это за О(n ).
Запросом это тоже можно, но будет за О(n*n) нет смысла делать
источник

VP

Vasili Pinchuk in MySQL
тебе 2 поля времени достаточно и id пользователя
источник

A

Art in MySQL
Что означает "выделить последовательные интервалы работы человека"?У меня есть грубо говоря кнопка на IP телефоне которую сотрудник нажимает и начинает работу. В это время я могу что то записать в базу
источник

A

Art in MySQL
Он тыкнул кнопку у него включился телефон и начали поступать звонки, тыкнул ещё раз и перестали поступать
источник

G

Grigorij in MySQL
А не легче в одной строке хранить и начало и конец рабочего времени? По завершению апдейти строку просто.
источник

G

Grigorij in MySQL
insert+update
источник

IZ

Ilia Zviagin in MySQL
У тебя начало интервала в одной записи, соответствующий конец - в другой записи.

а надо чтобы начало и конец интервала работы были бы в ОДНОЙ записи.
источник

G

Grigorij in MySQL
а то там и в правду средствами sql будет сложно считать на большиъ обьёмах
источник

G

Grigorij in MySQL
Или хотя бы ссылку на родительскую запись
источник

IZ

Ilia Zviagin in MySQL
Можно , но не нужно. Собственно, тебе ребята тут уже ровно о том же и говорили —надо собрать интервалы работы (и если надо простоя) в одну запись.
источник

IZ

Ilia Zviagin in MySQL
Вот это вот —нереляционные данные. Потому что по определению таблица - это набор записей, для которых не установлен порядок.

Поэтому обрабатывать такие даные средствами реляционной СУБД будет очень хреново — тебе надо будет восстанавливать всегда этот порядок записей.
Это достаточно сложно в вычислительном плане - квадрат или линейно-логарифмическая стоимость.
источник

A

Art in MySQL
Я понимаю... но сотрудников мало... и отчет нужно делать редко. Потому не думаю что это вызовет какие то сложности
источник

IZ

Ilia Zviagin in MySQL
Версия mySQL?
источник

G

Grigorij in MySQL
Можно при вставке таймастампа проверять, какая была последняя запись для этого пользователя. Если START, то для END записи прописывать айди оригинальной START записи. Потом джойшнишь просто таблицу саму на себя и получаешь интервалы.
источник