Table1
ID | JoinedStart | CohortID | CohortName
---------- | ------------------ | -------- | ----------
1 | 20080101 01:30:00 | 1 | Peanut
1 | 20090204 01:01:00 | 2 | Apple
2 | 20190107 05:52:14 | 1 | Peanut
3 | 20190311 02:35:26 | 2 | Apple
6 | 20190311 02:35:26 | 2 | Apple
Таблица 2
ID | event_start | StartDateTimestamp2
---------- | ------------- | -------------------
1 | HiredStart | 20080501 01:30:00
1 | DeferredStart | 20090604 01:01:00
2 | HiredStart | 20190115 05:52:14
3 | HiredStart | 20190330 02:35:26
6 | DeferredStart | 20190330 02:35:26
Попытка 1
SELECT CohortID, RANK() OVER(ORDER BY CohortID ASC) RANK, t1.id, event_start, startdatetimestamp2
FROM table1 e JOIN table 2 ON table2.id = table1.id
Затем я попытался:
SELECT CohortID, (CASE WHEN CohortID = 1 THEN RANK() OVER(ORDER BY(StartDateTimestamp2) ASC)
WHEN CohortID = 2 THEN RANK() OVER(ORDER BY(StartDateTimestamp2) ASC) END)
FROM table1 JOIN table2 ON table1.user_id = table2.user_id
Ожидаемый результат
CohortID | RANK | ID | CohortName | startdatetimestamp2
---------- | -----|----|------------|-------------------
1 | 1 | 1 | Peanut | 20080501 01:30:00
1 | 2 | 2 | Peanut | 20090604 01:01:00
1 | 3 | 6 | Apple | 20190115 05:52:14
2 | 1 | 3 | Apple | 20190330 02:35:26
2 | 2 | 5 | Peanut | 20190115 05:52:14
Ранг перезапускается, когда CohortId изменяется с 1 на 2, с 123 на 12.
Мой запрос выше просто занимает странную последовательность. Как мне сделать так, чтобы он перезапускался каждый раз, когда топ-3 отличается от CohortID?