T-SQL Расчет времени между сменой статуса в час - PullRequest
0 голосов
/ 23 декабря 2019

РЕДАКТИРОВАТЬ: Я изменил свой пример и сделал его более простым. Первая цитата - это как выглядит исходная таблица, вторая цитата - как должен выглядеть результат.


Привет всем,

У меня есть несколько парковок, которые отправляют только измененные состояния,Он отправляет «1», когда автомобиль прибыл на стоянку, затем ничего не отправляет, пока машина снова не уедет. В этот момент парковка отправляет «0». Мне нужно проводить анализ в течение длительного времени, поэтому было бы здорово увидеть количество времени в часе или около того, чтобы не получить слишком много строк (по сравнению с минутой).

Данные выглядят так (какпопросил, чтобы я уменьшил его до парковочного ID 10 и только до последней записи от 19.12. и записей от 20.12.):

+------------+------------------+--------+-------------+
| Parking-ID | DateTime         | Status | Comment     |
+------------+------------------+--------+-------------+
| 10         | 20.12.2019 16:35 | 0      | Car left    |
+------------+------------------+--------+-------------+
| 10         | 20.12.2019 08:22 | 1      | Car arrived |
+------------+------------------+--------+-------------+
| 10         | 19.12.2019 22:47 | 0      | Car left    |
+------------+------------------+--------+-------------+

Теперь, чтобы не было слишком легко для меня, рядом со "свободным"и «занято» статус там тоже теплый статус. Через 1 час после того, как автомобиль уехал, стоянка должна быть помечена как «теплая», потому что некоторые автомобили должны приходить и уходить быстро через несколько минут, а этот интервал времени должен быть обозначен как «теплый».

Чтобы не было слишкоммного строк (например, за каждую минуту), я был бы признателен, если бы можно было получить сводку за час. Для моего анализа я должен быть в состоянии увидеть, сколько часов в день было занято парковкой, сколько часов было тепло и сколько часов было свободно.

Таким образом, результат должен выглядеть примерно так (для парковки-ID 10 и на 20.12.2019):

+------------+------------------+--------+----------+---------+
| Parking-ID | DateTime         | Status | Duration | Comment |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 23:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 22:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 21:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 20:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 19:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 18:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 17:00 | 0      | 0.42     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 17:00 | 2      | 0.58     | Warm    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 16:00 | 2      | 0.42     | Warm    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 16:00 | 1      | 0.58     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 15:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 14:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 13:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 12:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 11:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 10:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 09:00 | 1      | 1.00     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 08:00 | 1      | 0.63     | Taken   |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 08:00 | 0      | 0.37     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 07:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 06:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 05:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 04:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 03:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 02:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 01:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+
| 10         | 20.12.2019 00:00 | 0      | 1.00     | Free    |
+------------+------------------+--------+----------+---------+

У кого-нибудь есть хороший подход? Я уже искал и пытался, но не мог найти подход.

Спасибо и наилучшими пожеланиями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...