私の仕事は、メンバーが現在の訪問日に図書館を何回訪問したかを把握することです。1人のメンバーの次のサンプルレコードがあります。たとえば、2000年10月1日(visit_id = 55353)に、このメンバーは初めて図書館を訪れたため、2000年10月1日より前に0回訪問しました。その後、2000年12月15日(visit_id = 12355)に、このメンバーは再び図書館を訪問しました。現在、彼は2012年12月15日より前に1回訪問しています。このメンバーも2002年1月1日に図書館を訪問し(visit_id = 52524)、2002年1月1日より前に2回訪問しました。次に、2009年12月12日(visit_id = 45254)の最後の訪問の前に移動します。このメンバーは図書館を9回訪問しています。
Member_ID Date_Visit Visit_id
12345 2000-10-01 55353
12345 2000-12-15 12355
12345 2002-01-01 52524
12345 2002-01-02 62558
12345 2003-05-30 22287
12345 2003-08-12 82552
12345 2003-09-12 12563
12345 2005-11-25 78785
12345 2008-12-25 98212
12345 2009-12-12 45254
ランク関数を使用した以下のスクリプトがありますが、最初の訪問と最後の訪問でスタックしています。これは、このデモの1人のメンバーにすぎないことに注意してください。実際のデータには多くのメンバーが含まれています。
SELECT
DATE_VISIT,
RANK() OVER (PARTITION BY MEMBER_ID ORDER BY DATE_VISIT) AS Rank
FROM RANKS
DATE_VISIT Rank
2000-10-01 1
2000-12-15 2
2002-01-01 3
2002-01-02 4
2003-05-30 5
2003-08-12 6
2003-09-12 7
2005-11-25 8
2008-12-25 9
2009-12-12 10
私はこのような私の出力が欲しいです:
DATE_VISIT Rank
2000-10-01 0
2000-12-15 1
2002-01-01 2
2002-01-02 3
2003-05-30 4
2003-08-12 5
2003-09-12 6
2005-11-25 7
2008-12-25 8
2009-12-12 9
誰かが見て助けてくれませんか?他の関数、ケースステートメント、またはランク関数を変更して機能させることはできますか?