Teradata分頁排序
Teradata分頁排序
1. 選取排序後的前N條記錄
Sql代碼
1.select top 3 e_name from ptemp.cuishen_temp_20100707
2.order by id
www.2cto.com
Sql代碼
1.select top 3 * from ptemp.cuishen_temp_20100707
2.order by id
2. 用rank給記錄排名
默認是降序排名
Sql代碼
1.select rank(e_name), id, e_name from ptemp.cuishen_temp_20100707_2
2.qualify rank(e_name) <> 2
也可以指定asc關鍵字進行升序排名
Sql代碼
1.select rank(e_name asc), id, e_name from ptemp.cuishen_temp_20100707_2
2.qualify rank(e_name asc) <= 2
其中 www.2cto.com
Sql代碼
1.qualify rank(e_name asc) <= 2
子句表示對結果集進行限制,選取e_name字段升序排名前2的記錄
限定條件當然也可以這樣寫:
Sql代碼
1.select rank(name asc), id, name from ptemp.cuishen_temp_20100707
2.qualify rank(name asc) >= 2 and rank(name asc) <= 5
3. 分頁查詢
可以用row_number關鍵字來進行分頁查詢,例如:
Sql代碼
1.select * from ptemp.cuishen_temp_20100707
2.qualify row_number() over(order by id) >= 2 and row_number() over(order by id) <= 5
4. row_number和rank的區別
row_number:顧名思意,就是行號,不管記錄相不相同,行號都是不同的。
rank:對於不同的記錄排名當然是不同的,而對於相同的記錄排名是相同的,這就是爲什麼分頁查詢不用rank來做的原因。
5. 可以用PARTITION BY關鍵字進行去重排名查詢
Sql代碼
1.select * from ptemp.cuishen_temp_20100707
2.QUALIFY ROW_NUMBER() OVER(PARTITION BY id ORDER BY id) = 1
上句表示:按id字段排序,取每段重複id記錄的TOP 1。千萬注意:這個不能用rank來做。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.