看到乙個 需求 特別有意思, 區間拆分。 恰巧和前面文章 哥說的, 區間合併需求相反, 以前 做的是 1-10, 11- 20 合併成 1-20 。
現在這個 需求相反 是 1-10, 拆分成 1,2,3,4,5,6,7,8,9,10 . 我的sql語句中大多是查詢 資料, 現在是 在查詢到的資料範圍中, 生成對應資料。
如圖:--問題1.表結構和資料如下:
--帳號 支票本編號 支票號範圍
--ac_no chq_id chq_range
--601001 1 100-150
--601001 2 200-300
--要求結果顯示如下:
--ac_no chq_id chq_number
--601001 1 100
--601001 1 101
--601001 1 150
--601001 2 200
--601001 2 201
--。。。。
--601001 2 300
with tab1 as(
select 601001 ac_no, 1 chq_id, '10-15' chq_number from dual
union all
select 601002 ac_no, 2 chq_id, '20-30' chq_number from dual
),tab2 as(select tab1.*, to_number( regexp_substr(chq_number, '[^-]+',1, 1)) re1, to_number(regexp_substr(chq_number, '[^-]+',1, 2)) re12
from tab1
)select ac_no,chq_id, re1+level-1,chq_number from tab2
connect by level <=re12-re1+1 and prior ac_no = ac_no
and ( prior dbms_random.value() ) is not null ;
ora-01436 :使用者資料中的connect by 迴圈 ----》 proir dbma_random.value();
今天 這道題目 哥想到另外一種解發, 效率上面可能存在問題。
解法: 查詢出 最大, 最小值, 以及最值之間的 差異,
然後 運用 connect by 生成 資料, 最後用外連線 獲取資料, 外連線上面 再用 lag 或者 lead 函式 獲取 其他列資料
連續區間和模板
水果店裡有 nn個水果排成一列。店長要求顧客只能買一段連續的水果。小陽對每個水果都有乙個喜愛程度 aiai,最終的滿意度為他買到的水果的喜歡程度之和。如果和為正 不管是正多少,只要大於 0 即可 他就滿意了。小陽想知道在他滿意的條件下最多能買多少個水果。你能幫幫他嗎?第一行輸入乙個正整數 n,表示水...
線段樹區間合併 連續區間問題
hdu 1540 資料很奇葩。用討論區裡面的話形容這題很合適 九九八十一難,這道題比北大的資料真是坑出翔來了 poj 2892 原題 一摸一樣 題意 給定n個村莊排成一行,它們相鄰的村莊通過地道相連,有三種操作 1 炸毀第x個村莊 2 修復上乙個被炸毀的村莊 3 詢問 輸出 第x個村莊還能和幾個村莊...
dp m段連續區間和
問題描述 最大m子段和問題 給定由 n個整數 可能為負整數 組成的序列a1,a2,a3,an,以及乙個正整數 m,要求確定序列 a1,a2,a3,an的 m個不相交子段,使這m個子段的總和達到最大,求出最大和。用dp i j 來表示在前j個數中,以a j 結尾並分為i段的最大和。dp i j max...