SQL – Puzzle 3

Two tables are given as shown picture below. First columns are unique. You should join and generate target table as shown picture below. Target table must contains all data. But there is a exception. If second column (col_2) of the first table (tbl_1) is “-1”, surpluss(excess) data of second table (tbl_2) will match col_2= “-1” row. In other words, surpluss(excess) data of tbl_2, will be match “-1”. If there is no “-1” then new row will be add. All data of tbl_1 and tbl2 must be included in target table. note: col_2 of tbl_2 can not be “-1”. But col_2 of tbl_1 has some “-1”. The scenario looks like foolish but I come across it at work 🙂

Aşağıdaki resimde gözüken 2 tablo verilmiştir. Bu tabloların ilk iki sütunu unique’dir. Bu iki tabloyu joinleyip, aşağıdaki target tabloyu oluşturmanız beklenmektedir. Target tabloda tbl_1 ve tbl_2 den gelen tüm data olmak zorundadır. Fakat şöyle bir istisna var. İkinci tablodaki (tbl_2) fazla datayı, birinci tablo ( tbl_1) ikinci sütunda ( tbl_2) “-1” olanın olduğu satıra yazılacak. Eğer tbl_1 de -1 li kayıt yoksa yeni satır olarak gelecek. Not: tbl_1 deki col_2 sütunu -1 değer alabilir fakat tbl_2’deki col_2 sütunu -1 değerini alamaz. Senaryo saçma gibi gözükebilir ama geçenlerde iş yerinde böyle bir durumla karşılaştım 🙂

Continue reading

CONNECT BY LEVEL KULLANIMI – otomatik data üretme

1’den 100’e kadar satır satır data üretmek istediğimizde veya belirli 2 tarih arasında satır satır data üretmek istediğimizde Oracle’ın CONNECT BY LEVEL özelliğini kullanabiliriz. Ben test datası üretmek ve kartezyen join yapacağım zaman bu özelliği kullanıyorum.

SELECT 0 + LEVEL as col1
  FROM dual
       CONNECT BY LEVEL <= 10
Continue reading

SQL – Puzzle 1

5×5 boş matristen, aşağıdaki datayı üretiniz. 5×5 empty matrix is given. Matrix will be populated according to the screenshot below.

puzzle 1
Continue reading

COALESCE NE İŞE YARAR? ORACLE ( Kod Okunurluğunu Arttırmak )

Oracle’ın Built-in fonksiyonu olan Coalesce maalesef çok fazla bilinmiyor. En basit tarif ile “Değer NULL ise yanındaki sağındaki değere bak” söyliyebilirim. Bu fonksiyonu iç içe geçmiş NVL,DECODE yerine kullanılabilir. Bu fonksiyon bilinmediği zaman okunması zor olan kodlar ortaya çıkıyor.

SELECT COALESCE(null,null,’dolu’,null,’dolu2′,null) FROM dual;

Dönen değer: “dolu” olacaktır.

Continue reading

Oracle Database 12c Release 2 Kurulumu – Windows Server 2012 Üzerine

Oracle Database 12c (12.2.0.1.0) kurulumunu Windows Server 2012 üzerine yaptım. Kurulum öncesinde hiç bir ön aşama bulunmamaktadır. Fakat database’e farklı bir makina üzerinden erişim ihtiyacınız olacağı için kurulumdan sonra firewall üzerinde ilgili portlara izinleri vermelisiniz.

Kuruluma başlamak için öncelikle

http://www.oracle.com/technetwork/database/enterprise-edition/downloads/index.html

Continue reading

PL SQL ASAL SAYILAR

PL SQL de asal sayıları bulmak için aşağıdaki kodu kullanabilirsiniz.

Kodu kabaca anlatmak gerekirse. 1’den 1000’e kadar olan tüm sayıları üretip with as ile all_numbers’ı oluşturdum.
ALL_NUMBERS’ı cartezyen (cross) join yaptım. Böylece her sayıyı, bölen başka bir sayı var mı diye kontroınl ettim.
1 sayısı her sayıya tam olarak bölündüğü için ve her sayı kendisine tam olarak bölündüğü için bunları küme dışında bıraktım.
2 sayının birbirine bölümü tam sayı ise ( roundlu hali ve roundsuz hali birbirine eşit ise) 0 dedim.

Continue reading

PL-SQL ARRAY VARRAY KULLANIMI – OLUŞTURMA, ELEMAN EKLEME, ARRAY ELEMANLARINI OKUMA

PL-SQL dilinde VARRAY olarak isimlendirilen veri tipi, klasik programlama dillerindeki Array’e denk gelmektedir. Varray tanımlanırken toplam boyutu ve içine atılacak verinin tipi önceden belirlenir. Örneğin :  TYPE t_tamsayi IS VARRAY(100) OF NUMBER(10);
Bu kod bize şunu söyler: Maximum 100 elemanlı, number(10) tipinde, t_tamsayı isminde bir array tanımlandı.Sonrasında array’i initialize edip, içine ilgili elemanlar eklenir (add element).

Continue reading