在日常作業中遇到這樣問題,有一個表test要資料分析,按照賬號和交易時間排序,如果同一賬號acc交易時間tran_date 超過10天,則分到一個組,如果上一筆交易和下一筆交易沒超過十天,但主題賬號變了,也新分到一個組里,如何便攜腳本呢,資料樣式如下:
acc tran_date
1111111 20191201
1111111 20191202
1111111 20200201
1111112 20200101
1111112 20200501
這里嘗試用lag函式
selct acc,tran_date,lag(acc,1,0) over(partity by acc order by acc,tran_date) from test where acc!=lag(acc,1,0) over(partity by acc order by acc,tran_date),這就報錯
請各位高人指點
uj5u.com熱心網友回復:
lag(acc,1,0) over(partity by acc order by acc,tran_date)里面的partity 拼寫錯了,partition。selct 是select,另外where acc!=lag(acc,1,0) over(partity by acc order by acc,tran_date)也不能直接在這用,要寫在子查詢里面
select * from
(select acc,tran_date,lag(acc,1,0) over(partition by acc order by acc,tran_date)l_tran_date from test ) t
where tran_date!=l_tran_date ;
uj5u.com熱心網友回復:
我自己寫了一個create table temp_huichu2 as select c.*,sum(jg) OVER(PARTITION BY NULL ORDER BY rn) zu_no from(select ROWNUM rn,
b.*,
CASE
WHEN riqicha > 10 or riqicha <0 THEN
1
ELSE
0
END jg
from
(select a.*,nvl((tran_date-lag(tran_date,1,0) over(partition by acc order by acc,tran_date asc)),0) as riqicha from temp_jizihuichu a
) b )c
select a.*,nvl((to_date(clr_date,'yyyy-mm-dd')-lag(to_date(clr_date,'yyyy-mm-dd'),1,0) over(partition by inter_acct order by inter_acct,clr_date asc)),0) as riqicha from temp_shijiacha_fenzu_ceshi a ;
-- 這里就實作了不同賬號會分組,因為lag里面的引數變成了0而不是空,所以差值會比較大超過10天,可以比對下和下面陳述句的效果
select a.*,nvl((tran_date-lag(tran_date,1,1) over( order by acc,tran_date asc)),0) as riqicha from temp_shijiacha_fenzu_ceshi a;
select a.*,nvl((tran_date-lag(tran_date,1,1) over(partition by acc order by acc,tran_date asc)),0) as riqicha from temp_shijiacha_fenzu_ceshi a;
select a.*,nvl((tran_date-lag(tran_date,1,null) over(order by acc,tran_date asc)),0) as riqicha from temp_shijiacha_fenzu_ceshi a;
select a.*,nvl((tran_date-lag(tran_date,1,null) over(partition by acc order by acc,tran_date asc)),0) as riqicha from temp_shijiacha_fenzu_ceshi a;
可以看出賬號不同新增分組的關鍵是partion by acc 和lag里的引數null的設定
但這里取了個巧,是利用分組時,日期相級訓比較大超過10天自動新增組,而不是根據賬號去判斷,然后分組,如果按賬號去判斷去分組,怎么寫啊,大家可以思考一下
uj5u.com熱心網友回復:
主題賬號變了 是什么意思?uj5u.com熱心網友回復:
表結構沒貼全吧,明顯缺東西。如果主題賬號會變,那上下次交易是按什么規則確定的沒有說清楚
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/8466.html
標籤:高級技術
下一篇:有關oracle技術
