После этого question.Вставка в таблицы закрытия строк при сохранении столбца даты
Мой стол
id sum type date
1 3 -1 2017-02-02
1 6 -1 2017-02-04
1 -6 2 2017-02-01
1 -3 1 2017-02-09
1 3 -1 2017-02-17
1 6 -1 2017-02-05
Этот запрос находит людей, которые проходят условия и возвращает occurrences
количество строк тех пользователей, с некоторыми столбцами модифицированными.
with t as(
select id
, -abs (sum) as sum
, sum (case when type = -1 then 1 else -1 end) as occurrences
--, collect_list(date) as time_col
from table
group by id, abs(sum)
having sum (case when type = -1 then 1 else -1 end) > 15
)
select t.id
, t.sum
, 2 as type
from t
lateral view explode (split (space (cast (occurrences as int) - 1),' ')) e
-- lateral view explode(time_col) time_table as time_key;
Проблема в том, что каждая строка должна содержать один столбец даты из списка. Я пытался добавить, а затем collect_list(date) as time_col
lateral view explode(time_col) time_table as time_key;
, но это только что вернулись все возможные комбинации. Возможно, я мог бы использовать соединение (это работает?), Но я подумал, действительно ли это необходимо.
В конце концов эти строки
1 3 -1 2017-02-17
1 6 -1 2017-02-05
будет превращаться в
1 -3 2 2017-02-17
1 -6 2 2017-02-05
Вы можете показать желаемые результаты? –
Если вам не нужна дата, то просто используйте 'COLLECT_LIST (date) [0]' или 'MAX (date)' или 'MIN (date)' – gobrewers14
Я бы предложил изменить тему ... –