2013-07-12 22 views
0
CUST_ID  ACCT_ID   FICO_SCORE DATE_APPLICATION_RECEIVED 
1 48378281 2,200,263,271 577   5/3/2001 
2 48378281 2,346,832,797 611   5/14/2003 
3 48378281 2,210,263,271 560   5/2/2002 
4 48378281 2,416,532,797 575   5/14/2005 

假設我有一個與我的公司在teradata有多個帳戶的客戶名單,我有他們的fico分數以及他們申請新帳戶的日期。客戶必須擁有2個以上的帳戶,並且最多可以有5個帳戶。以上是這張桌子對於一個客戶的樣子。我現在如何將這些人口劃分爲只有那些開戶日期至少相隔6個月的賬戶在第一次開戶和第二次開戶之間的客戶?我只需要計數(唯一(cust_id))。如何根據teradata中的帳戶打開日期來劃分人口?

回答

1

如果我正確理解你,你只關心前兩個帳戶至少相隔6個月?

SELECT COUNT(*) 
FROM 
(
    SELECT CUST_ID 
    FROM tab 
    QUALIFY -- only the first account of a customer 
     ROW_NUMBER() 
     OVER (PARTITION BY CUST_ID 
      ORDER BY DATE_APPLICATION_RECEIVED) = 1 
    AND -- at least six months between this and the next row 
     ADD_MONTHS(DATE_APPLICATION_RECEIVED, 6) 
     < MIN(DATE_APPLICATION_RECEIVED) 
     OVER (PARTITION BY CUST_ID 
       ORDER BY DATE_APPLICATION_RECEIVED 
       ROWS BETWEEN 1 FOLLOWING AND 1 FOLLOWING) 
) AS dt 
+0

+1 and thanks;一直在尋找使用ROWS BETWEEN的很好,簡單的例子。 – BellevueBob