Bir tablodaki ilk n satırı, son n satırı veya n. satır dan sonraki m satırı getir gibi sorgular için, Oracle 12c ile gelen sorgu biçimlerini göreceğiz.
SYNTAX
Select ....from table_name ....
[ OFFSET offset { ROW | ROWS } ]
[ FETCH { FIRST | NEXT } [ { rowcount | percent PERCENT } ]
{ ROW | ROWS } { ONLY | WITH TIES } ]
FETCH FIRST n ROWS ONLY : Örneğin Employees tablosundaki ilk 5 kaydın employee_id lerini getir dersek
select employee_id from hr.employees FETCH FIRST 5 ROWS ONLY;
100
101
102
103
104
FETCH FIRST n ROWS WITH TIES : Kullanılırsa aynı değerlere sahip satırlar eşleşirse n satır dan falzda döndürebilir. Aşağıda görüldüğü gibi 5. satırdaki 100 ile eşleşen 3 satır olduğu için 9 satır döndürmüştür.
select department_id from hr.employees order by department_id desc
FETCH FIRST 5 ROWS WITH TIES;
110
110
100
100
100
100
100
100
Satır sayısıyla kısıtlamaya ek olarak, yüzde olarak kısıtlamada yapabilmekteyiz. Örneğin tablonun %20 sini getirmek için FETCH FIRST 20 PERCENT ROWS ONLY ifadesi eklenir. 107 satırlık employee tablosunun %10 unu çağırısa 11 satır getirecektir bize.
select department_id from hr.employees order by department_id
fetch first 10 percent rows only
10
20
20
30
30
30
30
30
30
40
50
OFFSET n ROWS FETCH NEXT m ROWS ONLY; n. satırdan sonraki m satırı getir dersek.
select salary from hr.employees
offset 10 rows fetch next 5 rows only
8200
7700
7800
6900
11000
OFFSET kullanımında PERCENT ( yüzde) de belirtilebilir. 117 satırlı Employees tablosunda 100 satırdan sonraki satırların %50 sini getir dersek 7 satır getirmesi gerekir.
select salary from hr.employees
offset 100 rows fetch next 50 percent rows only
4400
13000
6000
6500
10000
12008
8300
Bir yanıt yazın