У меня есть таблица, подобная приведенной ниже, в Hive
.
Я хочу вычислить разницу во времени в seconds
для столбцов, где id
совпадает, и получить значение в столбце time_diff
.
Table
+-----+---------+------------------------+-----------+
| id | event | eventdate |time_diff |
+-----+---------+------------------------+-----------+
| 1 | sent | 2017-11-23 03:49:59.0 | 0 |
| 2 | sent | 2017-11-23 04:49:59.0 | 0 |
| 1 | click | 2017-11-24 03:49:50.0 | NULL |
+-----+---------+------------------------+-----------+
expected result
+-----+---------+------------------------+-----------+
| id | event | eventdate |time_diff |
+-----+---------+------------------------+-----------+
| 1 | sent | 2017-11-23 03:49:59.0 | 0 |
| 2 | sent | 2017-11-23 04:49:59.0 | 0 |
| 1 | click | 2017-11-24 03:49:50.0 | 86391 |
+-----+---------+------------------------+-----------+
Я сделал, как показано ниже вручную
SELECT (unix_timestamp('2017-11-24 03:49:50.0') - unix_timestamp('2017-11-23 03:49:59.0'));
Я получаю значениекак 86391
, но я не могу понять, как это сделать, когда оба id
одинаковы
Как получить ожидаемый результат
edit
+-----+---------+------------------------+-----------+
| id | event | eventdate |time_diff |
+-----+---------+------------------------+-----------+
| 1 | sent | 2017-11-23 03:49:50.0 | 0 |
| 1 | sent | 2017-11-23 03:49:59.0 | 0 |
| 2 | sent | 2017-11-23 04:49:59.0 | 0 |
| 1 | click | 2017-11-24 03:49:50.0 | NULL |
+-----+---------+------------------------+-----------+