from:
rank()對錶中的資料進行分級排序.
譬如有張學生成績統計單的表student_result
name number kemu fenshu
li 0113101 高數 90
zhang 0113098 高數 80
wang 0113077 高數 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70
我如果要檢索出表中高數的前兩名和物理的前兩名
那麼可以通過使用 rank()方法達到目的
--首先 通過kemu進行分類,然後按照fenshu降序排序
select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t
結果rk name number kemu fenshu
1 li 0113101 高數 90
2 zhang 0113098 高數 80
3 wang 0113077 高數 70
1 zhang 0113098 物理 90
2 li 0113101 物理 80
3 wang 0113077 物理 70
--然後,檢索出rk<=2的記錄,即取出前兩名
select * from (select rank() over(partition by kemu order by fenshu desc) rk,t.* from student_result t) as y where y.rk<=2;
結果rk name number kemu fenshu
1 li 0113101 高數 90
2 zhang 0113098 高數 80
1 zhang 0113098 物理 90
2 li 0113101 物理 80
dense_rank()和 rank()的用法完全相同,不同的是在出現分數相同的情況下
如name number kemu fenshu
li 0113101 高數 80
zhang 0113098 高數 80
wang 0113077 高數 70
li 0113101 物理 80
zhang 0113098 物理 90
wang 0113077 物理 70
select rank() over(order by fenshu desc) rk,t.* from student_result t
的結果為
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
2 zhang 0113098 高數 80
2 li 0113101 物理 80
5 wang 0113077 高數 70
5 wang 0113077 物理 70
而select dense_rank() over(order by fenshu desc) rk,t.* from student_result t
結果為rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
2 zhang 0113098 高數 80
2 li 0113101 物理 80
3 wang 0113077 高數 70
3 wang 0113077 物理 70
附 row_number()的使用
select row_number() over(order by fenshu desc) rk,t.* from student_result t
rk name number kemu fenshu
1 zhang 0113098 物理 90
2 li 0113101 高數 80
3 zhang 0113098 高數 80
4 li 0113101 物理 80
5 wang 0113077 高數 70
6 wang 0113077 物理 70
fetch n rows only
取出當前記錄的前多少行
如select row_number() over(order by user_no) from user_files fetch first 5 rows only;
DB2的字段型別
db2的字段型別如下 字段型別 描述字段長度及其預設值 char size 用於儲存定長 size 位元組的字串資料。每行定長 不足部分補為空格 最大長度為254位元組,預設值為每行1位元組。varchar size 用於儲存變長的字串資料。其中最大位元組長度由 size 指定。每行長度可變,最大長...
DB2 修改表字段
alter table table name add column name column type 2.更改字段型別 alter table table name alter column column name set data type column type 注意 更改字段型別是有限制的,如...
db2的大字段CLOB,BLOB,DBCLOB
db2有三種型別的大字段 clob character large objects 適用於存放單位元組的字串,當我們要儲存的字元長度超過varchar的最大長度 32k 時,我們就要考慮使用clob了。dbclob double byte character large objects dbclob...