面試經常被問到 拉鍊表

2021-10-04 04:18:23 字數 1647 閱讀 3014

致力做乙個首先想的是怎麼幫助別人的人

點讚再看,幫我個忙

剛工作的時候,有個厲害的同學比我先去公司實習,回到學校就跟我說拉鍊表的有關知識,而且後來跳槽面試時也被問到拉鍊表,所以想寫一下拉鍊表,希望能幫到萬一面試也被問到拉鍊表的同學。

比如銀行評價乙個客戶的等級,是根據客戶的資產多少來評定的,而且根據國家經濟情況變化而需要調整的。

所以你需要乙個能夠反映等級評分歷史變化的表:

等級代號

等級名稱

資產範圍

生效時間

失效時間

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...