У меня есть сценарий использования, который я пытаюсь решить с помощью SQL-запроса.
Механизм запросов основан на Presto 0.172, https://prestodb.io/
Допустим, у меня есть такие данные
+----------+------------+-------------+------+--------------------------+
| location | actiontype | actionstate | uuid | lastupdatedtime |
+----------+------------+-------------+------+--------------------------+
| x | type1 | start | 123 | 2018-09-09T16:54:37.648Z |
| x | type1 | start | 123 | 2018-09-09T16:55:37.648Z |
| x | type1 | start | 123 | 2018-09-09T16:56:37.648Z |
| x | type1 | end | 123 | 2018-09-09T16:57:37.648Z |
| x | type1 | end | 123 | 2018-09-09T16:58:37.648Z |
| y | type1 | start | 567 | 2018-09-09T14:57:37.648Z |
| y | type1 | end | 567 | 2018-09-09T14:58:37.648Z |
+----------+------------+-------------+------+--------------------------+
Я пытаюсь найти среднюю разницу во времени, когда конкретный тип действия скажет, что type1 начинается и заканчивается для данного uuid
т.е.. сгруппировать по UUID, типу действия и местоположению
В некоторых случаях у меня может быть несколько записей для одного и того же типа действия и состояния действия, и в этом случае мне нужно выбрать МАКС (время последнего обновления)
что-то вроде
select AVG(date_diff( MAX(lastupdatedtime of start)) and MAX(lastupdatedtime of end)
в таблице данных
группировка по местоположению, тип действия, uuid.