У меня есть вопрос, с которым я борюсь в SQL.
В настоящее время у меня есть ряд данных о местоположении и времени.Он состоит из устройств, расположенных в разных точках времени.Местоположения повторяются, поэтому, пока они имеют координаты широта / долгота, есть несколько повторяющихся.Временная метка появляется с нерегулярными интервалами (иногда несколько раз в секунду, иногда ничего в течение 30 секунд).Например, посмотрите представленные ниже данные (я сортирую по имени устройства в этом примере, но могу упорядочить по любому, если это поможет):
Device Location Timestamp
X A 1
X A 1.7
X A 2
X A 3
X B 4
X B 5.2
X B 6
X A 7
X A 8
Y A 2
Y A 4
Y C 6
Y C 7
Я хочу создать таблицу на основе приведенных выше данных, которыебудет показывать вход / выход или первый / последний раз в каждом месте, с общей продолжительностью этого экземпляра.то есть:
Device Location EntryTime ExitTime Duration
X A 1 3 2
X B 4 6 2
X A 7 8 1
Y A 2 4 2
Y C 6 7 1
Отсюда я мог бы обработать его дальше, например, для определения общего времени нахождения на определенный день.
Это то, что я мог бы сделать в Python или некоторых другихдругой язык с чем-то вроде цикла while, но я действительно не уверен, как это сделать в SQL.Вероятно, стоит отметить, что это в Azure SQL, и я создаю эту таблицу с помощью запроса Stream Analytics для экземпляра концентраторов событий.Причина, по которой я не хочу просто суммировать все в местоположении, заключается в том, что он будет передавать данные и пролистывать их для отображения, скажем, последних 24 часов.
Любые подсказки, советы или рекомендациио том, как я мог бы сделать это, будет принята с благодарностью.Я искал и не смог найти то, что искал - я вижу такие вещи, как datediff для расчета длительности между двумя временными метками или max и min для нахождения первой и последней дат, но ни одна из них, похоже, не совсемпоставьте галочку.Проблема, с которой я столкнулся, заключается в том, что устройства перемещаются и возвращаются в одно и то же место много раз в течение периода.Например, если взять первое вхождение / временную метку устройства X в местоположении A и вычесть его из последнего, не учитываются другие местоположения, к которым оно могло перемещаться между этими временными метками.Ситуация усложняется, временные метки нерегулярны, поэтому я не могу просто подсчитать количество вхождений для каждого местоположения и сложить их либо.
Может быть, я упускаю что-то простое или очевидное, но это заставило менятупик!Помощь будет принята с благодарностью:)