SQL ile Excel Karşılaştırması

Değişik ekranlardan veya internet sayfalarından veritabanına girilmiş bilgilerden SQL sorgu cümleleri kullanılarak SQL'de raporlama yapılır. 

Şimdi SQL'i Excel ile adım adım karşılaştıralım: 

Excel'de her bir kolon için o kolonlara tek tek Eşittir işareti ve ardından amaca yönelik atama işlemi yapılır veya gerekli fonksiyon yazılır. 

SQL'de veritabanından veri çekme Select terimi ve bu terim kullanılarak oluşturulan Select cümlesi yazılıp çalıştırılarak yapılır. Select teriminden sonra ilgili tabloların gerekli kolonlarının adları ve/veya amaca yönelik fonksiyonlar yazılır. Bu kolonlar ve fonksiyonlar kendiliğinden raporun birer kolonunu oluştururlar. 
---------------------------------------------------------------------------------------------------------------------------

Filtreleme 

Excel'de filtreleme, ya standart filtreleme düğmeleriyle ya da Gelişmiş Filtre veya Dilimleyici kullanılarak yapılır. 

SQL'de ise filtreleme, Select cümlesinde tablo ve tablo bağlantılarından sonra Where cümleciği kullanılarak yapılır. Where cümleciğinin içerisinde mantıksal kontrol ifadeleri yazılır. 
---------------------------------------------------------------------------------------------------------------------------

Fonksiyon Kullanımı  

Excel'de fonksiyon kullanımında Eşittir işaretinden sonra fonksiyon adı ve parantez içinde parametreleri yazılır. 

=year(today()) 

=yıl(bugün()) 


SQL'de fonksiyon kullanımında ise Select teriminden sonra fonksiyon adı ve parantez içinde parametreleri yazılır. 

Örnek: 

Select year(getdate()) 

---------------------------------------------------------------------------------------------------------------------------

Tablolar Arası İlişki 

Önce Excel'de tablolar arası ilişkiyi görelim: 

Bilindiği gibi Excel'de tablolar arası ilişki en çok DüşeyAra fonksiyonuyla kurulmaktadır. Tabii her bilgi getirilecek hücreye bu fonksiyon tek tek yazılmaktadır. 

İki tablo arasında ortak bir kolon olmalıdır. Bu kolon da, bilginin getirileceği tabloda birinci kolon olmak zorundadır. 

Bu ortak kolon, bilginin gösterileceği tabloda DüşeyAra fonksiyonundaki Aranan Değer parametresinde belirtilmektedir. 

Bir örnek verecek olursak aralarında ilişki kuracağımız Sınavlar ve Dersler tabloları olsun. Her iki tabloda da 'Ders Kodu' kolonu ortak kolon olacaktır. 

  =DüşeyAra(DersKodu;Dersler;2;0) 

Burada Sınavlar tablosundaki Ders Kodu kolonunun hemen sağındaki kolona 'Ders Adı' bilgisini getirtmiş olalım. 


Şimdi de SQL'de tablolar arası ilişkiyi ele alalım. 

SQL'de tablolar arası ilişki Join cümleciğiyle sağlanır. Çoğunlukla da bir Join çeşidi olan Left Join kullanılır. 

Burada da tablolarımız, Excel örneğimizdeki Sinavlar ve Dersler tabloları olacak. 

Veritabanında DersID, SinavID gibi kayıtları belirten kolonlar vardır. Bu kolonların bilgileri doğal sayılardır. 

Bu iki tablo arasında ilişki kurulmasını sağlayacak bir ortak kolon bulunmalıdır. Örneğimizdeki iki tablo arasında ortak kolon da DersID kolonu olsun. Yani bu kolon iki tabloda da bulunacak. Bu ortak kolonda değer doğal sayı olacak. 

Dersler tablosundaki DersID kolonunda bir sayı bir kez yazılabilecek, yani tekrarsız olacak. Çünkü bu sayı kayıt için bir belirteç olarak kullanılacak. Bir sayı birden fazla kullanılırsa o sayının hangi kayıt olduğu belli olmaz. Ayrıca bu tablonun hiç bir kaydında bu kolonu boş bırakılamaz olarak tanımlanır. Çünkü bir kaydın belirteç bilgisi olmazsa o kayda erişmek istediğimizde erişilemez. 

Sinavlar tablosundaki DersID kolonunda ise bir sayı birden fazla yazılabilir. Her bir yazılış, Dersler  tablosundaki bu DersID kaydına bir erişimi gösterir. Bu DersID numaralı Sınav kaydında her bir Sınav için kullanıldığında bu DersID ilgili Sınav kaydına yazılacaktır. 

Dersler tablosundaki DersID kolonu Primary Key olarak ve Sinavlar tablosundaki DersID ise bir referans olduğundan Foreign Key olarak tanımlanmalıdır. 

Dersler tablosundan DersAdi, DersAlanKodu Sinavlar tablosundan ise SinavTarihi, SinavTipiKodu, SinavSiraNo bilgilerini getirtecek olalım. 

Join cümleciği Select cümlesinin devamı olarak yazılır.   

  Select DersAdi, DesrAlanKodu, SinavTarihi, SinavTipiKodu, SinavSiraNo 
   from Sinavlar 
   left join Dersler on Dersler.DersID = Sinavlar.DersID 

Ana tablomuz Sinavlar olduğu için önce bu tabloya bağlandık, sonra bu (soldaki) tabloyu esas alarak Dersler tablosuna bağlandık. Select ile from arasında yazdığımız kolon isimleriyle de hangi kolonlardan bilgi getireceğimizi belirtmiş olduk. 

---------------------------------------------------------------------------------------------------------------------------

Koşullu ve Gruplu Toplama vs. İşlemleri 

Toplama, Ortalama, Minimum, Maksimum, Standart Sapma, Say gibi fonksiyonlar grup, yani küme (Aggregate) fonksiyonlarıdır. Bu fonksiyonlar, aynı zamanda betimsel istatistik fonksiyonlarıdır. 

Biz burada sadelik amacıyla grup işlemlerinden Toplama işlemini kullanacağız. 

Excel'de bu amaçla özellikle ÇokETopla fonksiyonu kullanılır. Bu fonksiyonda birinci parametrede hangi kolonun toplanacağı belirtilir. Gruplandırmalar ve filtrelemeler ise, bu parametreden sonraki Ölçüt Aralığı ve Ölçüt ikilileriyle oluşturulur. 

Excel'deki ÇokETopla fonksiyonuna, SQL'de aşağıdaki Sum, Where, And içeren Select cümlesi tam karşılık gelmektedir. 

Select 
  sum(Miktar) as ToplamMiktar 
from Satislar 
where Tarih = '20100101' and BayiID = '3' 

Buradaki where Tarih = '20100101' and BayiID = '3' cümleciği Eğer ölçütlerine karşılık gelmektedir ve sum(Miktar) as ToplamMiktar cümleciği ise toplama işlemini yapar. 

SQL'de bu amaçla ayrıca Group By cümleciği kullanılır. Group By cümleciğinde ilgili kolonlardaki birden fazla grup ve bu grupların toplama vs. işlem sonuçları listelenir. Her bir grup bir Eğer ölçütüne karşılık gelir. Group By cümleciği yazılırken, hangi kolonlara göre gruplama yapılacağı belirtilir. Select teriminden sonra gruplama kolonları yazılır. Bu kolonların ardından da Sum fonksiyonu kullanılarak ilgili kolonda toplama işlemi yaptırılır. Bu Group By cümleciği, belirtilen gruplama kolonunda bulduğu tüm grupları listeler ve karşılarına grup toplamlarını yazar. Bu listeleme Excel Pivot'a benzer. Bizim burada belirttiğimiz ÇokETopla ile uyum sağlamak için koşullu toplama yaptırmak üzere, Group By cümleciğine bir koşul cümleciği eklememiz gereklidir. Burada yazabileceğimiz koşul cümleciği, Having terimiyle yazılabilmektedir. Having'ten sonra ise mantıksal kontroller yazılır. 

Excel ÇokETopla Örneği: 



MSSQL Koşullu ve Gruplu Toplama örneği: 


İç İçe Fonksiyon ve İç İçe Select 

Excel'de bir fonksiyonun sonucu olan değer, bu fonksiyonu çağıran fonksiyonda çağıran parametreye gelir. İç içe fonksiyonları, matematikteki gibi Bileşik Fonksiyon olarak adlandırırız. 

Örnek

=Sin(Radyan(45)) bileşik fonksiyonu, önce 45 derecenin Radyan karşılığını bulur, bulduğu bu sonuç Sinüs fonksiyonunda kullanılır. 

SQL'de de bir Select cümlesinin sonucu olan değer, bu Select cümlesinin yazıldığı yere gelir. SQL'de bu türden İçteki Select cümleleri Sub Query olarak adlandırılır. 

Örnek 

Select 
OgrenciNo, 
(Select KisiAdi + ' ' + KisiSoyadi from Kisiler k where k.KisiID=o.KisiID) 
from Ogrenciler o 

-----------------------------------------------------------------------------------------------------------------------------

Konuya devam olarak SQL Tablo İlişkileri yazımı okumanızı tavsiye ederim. 

SQL ile Excel Karşılaştırmasına neden ihtiyaç duyulduğuna ilişkin SQL ile Excel Karşılaştırması Hakkında sayfasındaki bilgileri okumanızı tavsiye ederim. 



Bu blogdaki popüler yayınlar

Power BI'da Yeni Sütun Eklemek

Power BI Kullanımına Giriş

Power BI Üzerinde Fonksiyon Oluşturma ve Kullanma

Kümülatif Toplam

Ağırlıklı Ortalama Hesabı

SQL'de Group By Yaparak Rapor Oluşturmak

SQL'de Birden Fazla Tablodan Listeleme Yapmak

ETarihli Fonksiyonu

Bir Ürünün En Son Tarihli Fiyatının Bulunması