У меня есть некоторые данные, которые отформатированы следующим образом.
Столбцы ID
и DATE
являются первичным ключом таблицы.В активном столбце указывается, принимал участие пользователь в задании или нет.
Моя цель - найти для каждого пользователя последнюю дату, когда он был активен, ПОСЛЕ даты текущей строки.
Итак, я решил самостоятельно присоединиться к столу.Проблема - я использую SPARK SQL и не могу использовать подзапрос в предложении select, который содержит знак <
или >
.
Моя мысль была:
SELECT MAX(ACTIVE) from table t1, t2 where t1.ID = t2.ID and t1.Date>t2.Date
Однако это невозможно.
Как я могу сделать это иначе?
+----+----------+--------+-------------+
| ID | DATE | ACTIVE | LAST_ACTIVE |
+----+----------+--------+-------------+
| | | | |
| 1 | 06/12/19 | 0 | |
+----+----------+--------+-------------+
| 1 | 06/13/19 | 1 | |
+----+----------+--------+-------------+
| 1 | 06/14/19 | 0 | |
+----+----------+--------+-------------+
| 2 | 06/12/19 | 0 | |
+----+----------+--------+-------------+
| 2 | 06/13/19 | 1 | |
+----+----------+--------+-------------+
| 3 | 06/12/19 | 1 | |
+----+----------+--------+-------------+
| 3 | 06/13/19 | 0 | |
+----+----------+--------+-------------+