таблица:
Student_Id Roll_No Date _Rank
1 101 10101 201905 3
2 101 10101 201910 6
3 101 10101 201912 9
4 101 10102 201905 15
5 101 10102 201910 9
6 101 10102 201912 3
7 103 10103 201905 3
8 103 10103 201910 9
9 103 10103 201912 9
10 103 10104 201905 3
11 103 10104 201910 9
12 103 10104 201912 9
мне нужно создать столбец результатов на основе условия.
проверить для конкретного Student_Id, Roll_No, если rank имеет значение 9 и rank > 9 не появилось раньше, чем 9 на дату, затем 1, иначе 0.
если какой-либо Student_Id, Roll_No имеет кратное 9, тогда отмечать только первое вхождение.
Результат:
Student_Id Roll_No Date _Rank Result
1 101 10101 201905 3 0
2 101 10101 201910 6 0
3 101 10101 201912 9 1
4 101 10102 201905 15 0 ---
5 101 10102 201910 9 0 --- 15 > 9, came before 9 for that Roll_No
6 101 10102 201912 3 0
7 103 10105 201905 9 1
8 103 10103 201910 9 1
9 103 10103 201912 9 0
10 103 10104 201905 3 0
11 103 10104 201910 9 1 --- first occurrence should 1
12 103 10104 201912 9 0
Запрос:
SELECT Student_Id, Roll_Number, Date, _Rank,
ROW_NUMBER() OVER( PARTITION BY Roll_Number ORDER BY Date) as rw_number
FROM table t
-- this is giving the row_number which is appeared first.