SQL – Puzzle 7 – Min Max

Aşağıdaki resimde görüldüğü gibi; elimizde STN1 ve STN2 bazlı unique(tekil) veri var. 3. sütunu siz oluşturup dolduracaksınız. STN1 bazlı, minimum STN2 değerini ilk satıra, maksimum STN2 değerini son satıra yazacaksınız, aradaki kısım NULL olacak.
As you see at the screenshot below, data is unique according to STN1 and STN2. You will calculate the STN3 column. STN3 will be filled with minimum STN2 and maximum STN2 but it must be according to STN1 and only first and last cell must be filled.

Continue reading

SQL – Puzzle 6

Database’deki bir tablosundan, SQL ile HTML tablo kodu üretiniz. Kaynak verisetini, istenen görüntüyü, istenen html kod blogunu compact ve açık halini aşağıda bulabilirsiniz. HTML kodunun formatında özgürsünüz. HTML kodunuzu test etmek için, HTML çıktı kodunuzu notepad’e yapıştırıp, uzantısını HTML olarak değiştirip, tarayıcıda görüntüleyin.
Generate HTML table code from database table. Dataset code, expected output, expected HTML code in compact and formatted way are given below. You are free in HTML output format. To test your HTML code You can copy-paste your code to your Notepad and change the extension and open the file in browser.

Continue reading

Oracle Database Proje Jaguar – Veritabanı Proje

Jaguar araçlarının yer aldığı bir veritabanı projesi yapmak istedim. Keyfi olarak yapmaya başladığım bu veritabanı projesinde şimdilik, yıl bazlı en az yakıt tüketen ve en performanslı Jaguar marka araçlar HTML tablosu olarak listeleniyor. Aklıma geldikçe, kullanımı kolay olmayan kod ve sorguları buraya eklemeye devam edeceğim. Sayfanın en sonunda, tüm kodları paylaştım. Fikir, öneri, eleştiri, istek vs için iletişim kısmından bana yazabilirsiniz.

Continue reading

Oracle Create Trigger Örneği – Before Insert

Oracle veritabanında fikir vermesi açısından örnek bir trigger paylaşmak istedim. Trigger’ın amacı; tabloya yeni kayıt insert edilmeden önce, karakter alanındaki string’in ilk harf’ini INITCAP fonksiyonu ile büyük harf yapmak. ( insert sonrası kontrol edilip, update de yapılabilir ama performans açısından hatalı bir yaklaşım olur.) Örnek kullanım için tbl_trigger_ornek isminde bir tablo oluşturdum. Insert edileceği değeri :NEW.ack ile elde edip, built-in INITCAP fonksiyonu kullanarak yeni bir değişkene attım. Devamında bu değişkeni :NEW.ack’ya yazdım.

Continue reading

Oracle Create Sequence

Oracle’da otomatik olarak Primary Key ( Birincil Anahtar ) oluşturmak için Sequence objesinden faydalanıyoruz. Microsoft SQL Server’daki “IDENTITY(1,1)” Oracle karşılığı Sequence’dir veya 12c ile gelen “GENERATED BY DEFAULT ON NULL AS IDENTITY” dir. 2 kullanımı da örneklerle aşağıda göstereceğim.

We can use Sequence to generate Primary Key (PK) automatically. In Microsoft SQL Server “IDENTITY(1,1)” refers to Sequence or “GENERATED BY DEFAULT ON NULL AS IDENTITY” that is released in Oracle 12c. I will demonstrate below examples.

Continue reading

Oracle Create Function Input

Oracle’da değer alıp, hesaplama yapıp sonucu döndüren basit bir örnek vermek istedim. Amacım hem değer alan hem de bir değişken döndüren bir fonksiyonun syntax’ını göstermek.

You can see the basic example below for a funciton with input and return value in Oracle.

Continue reading

SQL – Puzzle 5

24 saatlik ( sütunluk) bir tablomuz var. İlk sütunda “g” bilgisi var. Belirli adet boşuk bırakılıp, tekrar “g” bilgisi ilgili sütuna yazılıyor. Bu iş rutin olarak devam ediyor. Elimizde ilk 12 saatlik ( sütunluk) bilgi var. Buna bakarak kalan sütunların datasını bizim tahmin etmemiz bekleniyor. Aşağıdaki resim üzerinden de açıklamaya çalıştım. Puzzle’ın çözülmesi için gerekli script’i aşağıda ve GitHub hesabımda paylaştım.

Continue reading

SQL – Puzzle 4 – Baklava :)

İlteriş Mutlu, baklava ve SQL’in birleştiği bu leziz puzzle’ı, iftiharla sunar.

Elimizde şerbetli tatlı satan bir dükkanın cafe kısmındaki satışlarının olduğu tablo var. Amaç; en fazla satılan 5 ürünü tespit edip, cebinde 30 tl, 50tl, 60tl,80tl,120tl v.s. olan müşteriler için sırayla en çok satılan ürünlere göre tabak sunmaktır. Eğer 5 ürünü tabağa koyduktan sonra hala para kalmışsa, en çok satılan sıralı 5’liden 2. adetleri de tabağa koymalıyız. Örneğin, benim verdiğim datalara göre 60 tl yi geçmiyecek bir tabak hazırlanmak istenirse, sırası ile en çok satılan ürünlere göre 5 tatlının hepsi alınabiliyor. 60tl ‘den fazla parası olan kişi en çok satılan ürünlerden sırayla birer adet daha alabiliyor. Ekran çıktısı üzerinden açıklamak daha kolay olacaktır.

Continue reading

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