Setelah membaca topik hari ini 
“SQL. Menghibur tugas, " Saya ingat bahwa saya sudah lama ingin merekomendasikan buku yang bagus untuk tingkat lanjut Oracle SQL dari spesialis Oracle kami yang sangat baik, Alex Reprintsev -" Kekuatan Oracle SQL ". Tidak hanya itu sangat berguna bagi mereka yang ingin tahu Oracle SQL pada tingkat tinggi, juga 
gratis ! Selain itu, ada versi dalam bahasa Rusia dan Inggris.
Secara umum, 
tautan ke buku itu sendiri .
Dan untuk 
membahas buku itu sendiri dengan penulis .
Dan untuk menanamkan beberapa contoh tugas dari itu:
- Komponen yang terhubung
 ada grafik yang tidak terarah (non-directional) yang ditentukan oleh daftar tepi dan
 diperlukan untuk mendapatkan komponen yang terhubung.
 
 Untuk data dalam tabel di bawah:
 
 create table edge(x1, x2) as select 10,20 from dual union all select 50,40 from dual union all select 20,30 from dual union all select 20,40 from dual union all select 60,70 from dual union all select 80,60 from dual union all select 20,90 from dual;
 
 Diharapkan hasil berikut (urutan penomoran komponen tidak kritis):
 
   X GRP 
 
 
- Ketergantungan memesan
 Sekarang pertimbangkan masalah pada grafik terarah (terarah).
 Ada tabel dengan dependensi antara objek yang tidak mengandung siklik
 ketergantungan. Namun, lebih dari satu jalur mungkin ada di antara pasangan simpul
 Struktur seperti itu tidak dapat disebut pohon.
 
  create table d(name, referenced_name) as (select null, 'a' from dual union all select null, 'd' from dual union all select 'a', 'b' from dual union all select 'd', 'b' from dual union all select 'b', 'e' from dual union all select 'b', 'c' from dual union all select 'e', 'c' from dual);
 
 Perlu untuk berkeliling semua objek dalam jumlah minimum langkah, sementara pada setiap langkah
 Anda dapat mem-bypass hanya objek-objek yang semua objek dependen dilewati. Yaitu, on
 langkah pertama mem-bypass objek yang tidak memiliki dependensi, pada langkah kedua, mereka yang bergantung
 dari objek langkah pertama dan seterusnya. Dengan kata lain, dependensi kedalaman diberi nomor.
 
- Rentang mencakup
 Misalkan ada tabel dengan bentuk berikut:
 
  create table t_range(a, b) as (select 1, 15 from dual union all select 3, 17 from dual union all select 6, 19 from dual union all select 10, 21 from dual union all select 17, 26 from dual union all select 18, 29 from dual union all select 20, 32 from dual union all select 24, 35 from dual union all select 28, 45 from dual union all select 30, 49 from dual);
 
 b> a untuk setiap pasangan a, b; sebuah yang unik
 
 Adalah perlu untuk mendapatkan segmen (1:15), (17:26), (28:45), yaitu, kita mulai dari garis dengan
 minimum a , dan ambil baris berikutnya sehingga untuk itu a lebih besar dari b dari baris saat ini dan seterusnya
 selanjutnya.
 
- Jalur teratas
 Untuk tabel dengan daftar direktori di sistem file, output hanya yang tidak punya
 subdirektori.
 
  create table t_path(path) as select '/tmp/cat/' from dual union all select '/tmp/cata/' from dual union all select '/tmp/catb/' from dual union all select '/tmp/catb/catx/' from dual union all select '/usr/local/' from dual union all select '/usr/local/lib/liba/' from dual union all select '/usr/local/lib/libx/' from dual union all select '/var/cache/' from dual union all select '/var/cache/'||'xyz'||rownum||'/' from dual connect by level <= 1e6;
 
 Untuk data yang ditunjukkan, hasilnya adalah:
 
  PATH