Google SQL запрос (MySQL) - PullRequest
       6

Google SQL запрос (MySQL)

1 голос
/ 06 апреля 2020

Извините, новичок ie в SQL. У меня есть такая таблица в Google Cloud SQL (MySql). Как я могу получить разницу во времени между соседними строками, такими как 164 и 165? Я хочу получить период времени (время простоя), когда никто из sencor не работал с условием, что время простоя больше 20 минут.


autoID | Datetime         | Number_of_sensor
163   | 2020-04-06 13:46:42 | C3
164   | 2020-04-06 13:46:45 | C4
165   | 2020-04-06 15:10:48 | C3
166   | 2020-04-06 15:46:48 | C4

Я пытался что-то, но не смог получить результат.

Ответы [ 2 ]

1 голос
/ 08 апреля 2020

Вы можете использовать встроенную функцию TIMESTAMPDIFF (), используя значения из 2 таблиц со смещением на 1 в качестве аргументов, и объединить эти 2 таблицы. Это будет работать с MySQL 5.7, который используется в Google Cloud SQL.

SELECT a.autoID, a.Datetime , TIMESTAMPDIFF(MINUTE,a.Datetime,COALESCE(b.Datetime,0)) as downtime 
FROM test a
LEFT JOIN test b on a.autoID=b.autoID-1
HAVING downtime > 20;
0 голосов
/ 07 апреля 2020

Вы должны будете использовать то, что называется Функции окна , которые доступны только на MySQL после версии 8.0

Google Cloud SQL для MySQL только до версии 5.7 на данный момент.

Однако, если вы используете Postgres, он сможет работать как оконная функция SQL Запрос.

...