致力做乙個首先想的是怎麼幫助別人的人
點讚再看,幫我個忙
剛工作的時候,有個厲害的同學比我先去公司實習,回到學校就跟我說拉鍊表的有關知識,而且後來跳槽面試時也被問到拉鍊表,所以想寫一下拉鍊表,希望能幫到萬一面試也被問到拉鍊表的同學。
比如銀行評價乙個客戶的等級,是根據客戶的資產多少來評定的,而且根據國家經濟情況變化而需要調整的。
所以你需要乙個能夠反映等級評分歷史變化的表:
等級代號
等級名稱
資產範圍
生效時間
失效時間
a低價值客戶
0~5000
2000/1/1
2015/2/1
a低價值客戶
0~10000
2015/2/2
2099/12/31
b潛力客戶
10000~50000
2000/1/1
2099/12/31
表中資料反應了銀行評定客戶等級的標準,等級a(低價值客戶),在2000/1/1日至2015/2/1日之間,資產低於5000的客戶為級別a,在2023年2月2日將a等級的資產範圍調整為低於10000,像這種可以反應歷史變化的資料表就是拉鍊表了。
可以注意到,拉鍊表會有兩個時間字段,生效時間和失效時間,表示當前記錄的有效期,而且同一等級的生效時間和失效時間是首尾相連的,也就是說同一等級在確定的時間點可以找到確定的資產範圍,這樣也就達到了歷史可查的效果。
比如上面**,一開始表中只有一條等級a的資料
等級代號
等級名稱
資產範圍
生效時間
失效時間
a低價值客戶
0~5000
2000/1/1
2099/12/31
在2023年2月2日要更新等級a的資產範圍為0~10000,
第一步:匹配表中是否有等級代號等於a的記錄,
等級代號
等級名稱
資產範圍
生效時間
失效時間
a低價值客戶
0~5000
2000/1/1
2015/2/1
a低價值客戶
0~10000
2015/2/2
2099/12/31
v_count number;
select
count(1
)into v_count
from t_grades
where grade_code =
'a';
if v_count >
0then
update t_grades
set end_date =
'2015/2/1'
where grade_code =
'a'and end_date =
'2099/12/31'
;commit
;endif;
insert
into t_grades
values
('a'
,'低價值客戶'
,'0~10000'
,'2015/2/2'
,'2099/12/31');
commit
;
氣泡排序 面試會經常被問到
include include include include void main for num 0 num 19 num for h 0 h 19 num h for num 0 num 20 num 比較相鄰的元素。如果第乙個比第二個大,就交換他們兩個。對每一對相鄰元素作同樣的工作,從開始第一...
面試中經常被問到的問題
1 請簡單解釋演算法是什麼?演算法是乙個定義良好的計算過程,它將一些值作為輸入並產生相應的輸出值。簡單來說,它是將輸入轉換為輸出的一系列計算步驟。2 解釋什麼是快速排序演算法?快速排序演算法能夠快速排序列表或查詢。它基於分割交換排序的原則,這種型別的演算法占用空間較小,它將待排序列表分為三個主要部分...
面試經常被問到的SQL優化
1.不要把select子句寫成 select select from t emp 2.對order by排序的字段設定索引 3.少用is nullselect ename from t emp where comm is null 不使用索引 select ename from t emp wher...