Как написать hql / sql, чтобы решить нижеприведенную проблему - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь написать приведенный ниже код для достижения результата?

Ввод:

+----------------------+
|         dttm         |
+----------------------+
| 2014-11-18 16:23:01  |
| 2014-11-18 16:23:02  |
| 2014-11-18 16:26:14  |
| 2014-11-18 16:26:15  |
| 2014-11-18 16:26:16  |
| 2014-11-18 17:43:02  |
| 2014-11-18 17:43:03  |
| 2018-12-17 23:59:59  |
| 2018-12-18 00:00:00  |
| 2019-01-17 00:00:00  |
| 2019-01-17 00:00:01  |
+----------------------+

Выход:

+----------------------+
|         dttm         |
+----------------------+
| 2014-11-18 16:23:01  |
| 2014-11-18 16:23:02  |
| 2014-11-18 16:26:14  |
| 2014-11-18 16:26:15  |
| 2014-11-18 16:26:16  |
| 2014-11-18 16:26:16  |
| 2014-11-18 17:43:02  |
| 2014-11-18 17:43:03  |
| 2018-12-17 23:59:59  |
| 2018-12-18 00:00:00  |
| 2019-01-17 00:00:00  |
| 2019-01-17 00:00:01  |
+----------------------+

Логика реализации: позиции 1 и 2 должны иметь разницу в 1 секунду, 3 и 4 должны иметь разницу в 1 секунду и т. Д.

Если это не так, продублируйте эту позицию.

1 Ответ

0 голосов
/ 09 апреля 2019

Попробуйте это



select a.dttm from (
select   t1.rn, t1.dttm, case when  (unix_timestamp(t2.dttm) - unix_timestamp(t1.dttm) )  = 1 then '1' when  (unix_timestamp(t2.dttm) - unix_timestamp(t1.dttm)) is null then '1' else '1,2' end as split_rec
from (select dttm, row_number () over () as rn from tmstmp) t1 left outer join
(select dttm, row_number () over () as rn from tmstmp) t2
on t1.rn = t2.rn-1 and pmod(t2.rn,2) =0) a
lateral view explode(split(a.split_rec , ',')) temp as td1
;



Output is :

+-----------+------------------------+--+
| temp.td1  |         a.dttm         |
+-----------+------------------------+--+
| 1         | 2014-11-18 16:23:01.0  |
| 1         | 2014-11-18 16:23:02.0  |
| 1         | 2019-01-17 00:00:00.0  |
| 1         | 2019-01-17 00:00:01.0  |
| 1         | 2014-11-18 16:26:14.0  |
| 1         | 2014-11-18 16:26:15.0  |
| 1         | 2014-11-18 16:26:16.0  |
| 2         | 2014-11-18 16:26:16.0  |
| 1         | 2014-11-18 16:26:16.0  |
| 1         | 2014-11-18 17:43:02.0  |
| 1         | 2014-11-18 17:43:03.0  |
| 1         | 2018-12-17 23:59:59.0  |
| 1         | 2018-12-18 00:00:00.0  |
+-----------+------------------------+--+


...