연속 기간 동안 순위 첫 unpayment 월에했다, 그리고 두 번째 4 월. Id 3은 나중에 그를 제외시킬 것이기 때문에 역시 괜찮습니다. 그러나 id 1의 경우 두 번째 지불 기한은 5 월이었고 3 월에 지불하지 않았기 때문에 첫 번째로 만들고 싶었지만 4 월에 다시 지불 했으므로 거기서 랭킹이 시작됩니다. 그가 마지막 지불을하면 프로세스가 다시 시작됩니다.I 연속 unpayments의 양을 얻을 필요가
아이디어는 복잡한 쿼리없이 간단하게 유지하는 것입니다. 밀도가 높은 순위와 동일하게 처리해야하지만 날짜가 연속 일 때만 가능합니다.
예제가 명확 해 주시기 바랍니다.
편집
:ID DATER STATUS RNK
1 20130331 Not_paid 1
1 20130531 Not_paid 2
1 20130430 Paid 1
2 20130331 Not_paid 1
2 20130430 Not_paid 2
3 20130331 Paid 1
3 20130430 Paid 2
3 20130531 Paid 3
그리고 제가 좀하고 싶습니다 것은 이것이다 : 이것은 내가 현재 쿼리에서 무엇을 얻을
ID DATER STATUS RNK
1 20130331 Not_paid 1
1 20130430 Paid 1
1 20130531 Not_Paid 1
2 20130331 Not_paid 1
2 20130430 Not_paid 2
3 20130331 Paid 1
3 20130430 Paid 2
3 20130531 Paid 3
이러한 것을 나는 최대를 얻으려면 (등급)을 사용하여 사용자가 현재 지불하고있는 미 지불 금액을 확인합니다. 미납금이 1 건 있고 ID 2가 두 번 연속 지급되지 않으며 ID 3에는 미납금이 있습니다. 이것은 연속 된 4 번째 미납시에 사용자를 혼란스러운 것으로 간주해야하기 때문입니다.
편집 :이 질문에 완벽한 대답은 아니지만,이 얻을 수있는 가능한 솔루션입니다 https://forums.oracle.com/thread/2555552
예상 출력을 표시 할 수 있습니까? 'LAG'을 사용하여 이전 상태를 확인할 수 있습니다. 이는 연속 된 값을 결정할 때 도움이됩니다. –
안녕하세요 에드, 나는 내가 기대하는 것을 더 분명하게하기 위해 글을 편집했다. LAG를 사용해 보았지만 8 백만 행이있는 테이블을 통해 쿼리해야하고 처리하는 데 시간이 오래 걸리지 만 조밀 한 순위는 몇 초 정도 걸리며 결과와 함께 더 쉽게 작업 할 수 있습니다. – vdBurg