SQL Çalışma Notları: Fonksiyonlar ve Alt Sorgular
1. Matematiksel Fonksiyonlar (Count, Sum, Avg, Max, Min)
Soru: Ürünler tablomuzda kaç adet ürün var sayısını bulalım?
Select Count(*) From tbl_urunlerSoru: Ürünler tablomuzda stok sayısı 100’den az olan kaç adet ürün var sayısını bulalım?
Select Count(*) From tbl_urunler
Where stok_miktari < 100Soru: Ürün adı içerisinde ‘e’ harfi geçen ürünlerin sayısını bulan sorguyu yazalım.
Select Count(*) From tbl_urunler
Where urun_adi like '%e%'Soru: Toplamda kaç ürünümüz (stok miktarı toplamı) vardır?
Select Sum(stok_miktari) As 'Toplam' from tbl_urunlerSoru: Silgi, Makas ve dosya ürünlerinden toplamda kaç adet vardır?
Select Sum(stok_miktari) As 'Toplam' from tbl_urunler
Where urun_adi In ('Silgi', 'Makas', 'Dosya')Soru: Toplamda kaç adet defter vardır?
Select Sum(stok_miktari) As 'Toplam' from tbl_urunler
Where kategori like 'Defter'Soru: Bilgiişlem departmanında çalışanlara toplam ne kadar maaş ödemesi yapılmaktadır?
Select Sum(maas) As 'Toplam' from tbl_personeller
Where departman_id = 1Soru: Ürünler tablosundaki ürünlerin ortalama stok sayısını hesaplayan sorguyu yazınız.
Select Avg(stok_miktari) From tbl_urunlerSoru: Adresi Ankara veya Bursa olan personellerin ortalama maaşını hesaplayan sorguyu yazınız.
-- 1. Yöntem
Select Avg(maas) From tbl_personeller
Where adres = 'Ankara' or adres = 'Bursa'
-- 2. Yöntem
Select Avg(maas) From tbl_personeller
Where adres In('Ankara', 'Bursa')Soru: Personel tablosunda maaşı en yüksek olan personelin maaş bilgisini veren sorguyu yazınız.
Select Max(Maas) From tbl_personellerSoru: Adresi Adana, Bursa ve İstanbul olan şehirler içinde en yüksek maaş bilgisini veren sorguyu yazınız.
Select Max(Maas) From tbl_personeller
Where adres IN ('Adana', 'Ankara', 'Bursa')Soru: Ürünler tablosunda stok değeri en düşük olan ürünlerin bilgisini veren sorguyu yazınız.
Select MIN(Stok_miktari) From tbl_urunlerSoru: Ürünler tablosunda kategorisi kalem olan ürünlerden fiyatı en düşük olan ürünün fiyatını gösteren sorguyu yazınız.
Select MIN(birim_fiyat) From tbl_urunler
Where kategori = 'Kalem'Soru: Ürünler tablosundaki en yüksek satış fiyatı ile en düşük satış fiyatını listeleyen sorguyu yazalım.
Select Max(birim_fiyat) As 'En Yüksek', Min(birim_fiyat) As 'En Düşük'
from tbl_urunlerSoru: Ürünler tablosunda en yüksek satış fiyatı ile en düşük satış fiyatı arasındaki farkı bulan sorguyu yazalım.
Select Max(birim_fiyat) - Min(birim_fiyat) As Fark from tbl_urunler2. Alt Sorgular (Subqueries)
Soru: Departmanı insan kaynakları olan personellerimizi listeleyelim.
Select * from tbl_personeller
Where departman_id = (Select departman_id From tbl_departman where Departman_adi = 'İnsan Kaynakları')Soru: Departmanı insan kaynakları olan personellerimizden hangisi en yüksek maaşı almaktadır?
Select Max(Maas) from tbl_personeller
Where departman_id = (Select departman_id From tbl_departman where Departman_adi = 'İnsan Kaynakları')Soru: Departmanı bilgiişlem olan personellerimizin toplam maaşını listeleyen sorguyu yazalım.
Select Sum(maas) from tbl_personeller
Where departman_id = (Select departman_id From tbl_departman where Departman_adi = 'bilgiişlem')Soru: Personeller tablomuzda en yüksek maaşa sahip olan personelin bilgilerini veren sorguyu yazalım.
Select * from tbl_personeller
Where maas = (Select Max(Maas) from tbl_personeller)Soru: Ürünler tablomuzda stok sayısı en düşük olan ürünün stok değerine 25 ekleme yapan sorguyu yazalım.
Update tbl_urunler
Set stok_miktari += 25
Where stok_miktari = (Select MIN(stok_miktari) from tbl_urunler)Soru: Makas isimli ürüne stok miktarı en yüksek olan ürünün stok değerini yazan sorguyu yazalım.
Update tbl_urunler
Set stok_miktari = (Select MAX(stok_miktari) from tbl_urunler)
Where urun_adi = 'Makas'3. Metinsel Fonksiyonlar
Soru: Girilen harfin (‘A’) ASCII kod karşılığını veren sorguyu yazalım.
Select Ascii('A')Soru: Girilen ASCII koduna (78) karşılık gelen harfi veren sorguyu yazalım.
Select Char(78)Soru: ‘dünya merhaba nasılsın’ ifadesinde ‘merhaba’ kelimesinin kaçıncı karakterden itibaren başladığını bulalım.
Select Charindex('merhaba', 'dünya merhaba nasılsın')Soru: Mustafa Kemal Atatürk’ün ‘’Dinlenmemek üzere yürümeye karar verenler asla yorulmazlar’’ sözünde ‘asla’ kelimesinin kaçıncı karakterde başladığını bulalım.
Select Charindex('asla', 'Dinlenmemek üzere yürümeye karar verenler asla yorulmazlar')Soru: ‘Merhaba Dünya’ ifadesinin ilk üç karakterini yazdıran sorguyu yazalım.
Select left('Merhaba Dünya', 3)Soru: ‘Merhaba Dünya’ parametresinin kaç karakter olduğu bilgisini veren sorguyu yazalım.
Select len('Merhaba Dünya')Soru: Ürünler tablosundaki ürün adlarını büyük harfe ve küçük harfe çeviren sorguları yazalım.
-- Büyük Harf
Select Upper(urun_adi) from tbl_urunler
-- Küçük Harf
Select Lower(urun_adi) from tbl_urunlerSoru: Ürünler tablosundaki ürün adlarını yan yana iki kere yazdıran sorguyu yazalım.
Select replicate(urun_adi, 2) from tbl_urunlerSoru: Personellerin isimlerinin solundaki veya sağındaki boşlukları kaldıran sorguları yazalım.
-- Sol boşlukları sil
Select Ltrim(ad) from tbl_personeller
-- Sağ boşlukları sil
Select Rtrim(ad) from tbl_personellerSoru: Girilen parametre değerini (personel adını) tersten yazdıran sorguyu yazınız.
Select reverse(ad) from tbl_personellerSoru: ‘Merhaba Dünya Bugün Hava Ne Kadar Soğuk’ ifadesinin 20. karakterinden itibaren 10 karakter getiren sorguyu yazınız.
Select Substring('Merhaba Dünya Bugün Hava Ne Kadar Soğuk', 20, 10)Soru: Personel email bilgisinin 5. karakterinden sonra 20 karakter getiren sorguyu yazınız.
Select Substring(email, 5, 20) from tbl_personeller4. Aritmetik Fonksiyonlar
Soru: Girilen parametreye göre (4 üzeri 2) üs alma işlemi yapan sorguyu yazalım.
Select Power(4, 2)Soru: Ürünler tablosunda bulunan birim fiyatı değerlerinin 2. dereceden kuvvetini hesaplayan sorguyu yazalım.
Select Power(birim_fiyat, 2) from tbl_urunlerSoru: Girilen parametrenin (81) karekökünü hesaplayan sorguyu yazalım.
Select Sqrt(81)Soru: Girilen parametrenin (25) karesini hesaplayan sorguyu yazalım.
Select Square(25)Soru: Parametre olarak girilen 24 ve 36 sayılarını toplayan sorguyu yazalım.
Select 24 + 36 as 'toplam'Soru: Ürünler tablomuzda bulunan stokları (birim fiyat üzerinden) 3 ile çarpan sorguyu yazalım.
Select urun_adi, birim_fiyat * 3 from tbl_urunlerSoru: Personellerin maaşına 10000 TL artıran sorguyu yazalım.
Select ad, soyad, maas, maas + 10000 As 'Yeni Maaş' from tbl_personeller5. Tarihsel Fonksiyonlar
Soru: Sorgunun çalıştırıldığı tarih saat bilgisini veren sorguyu yazalım.
Select Getdate() As 'Tarih-Saat'Soru: Sorgunun çalıştırıldığı tarih bilgisini parça parça (Yıl, Ay, Gün, Hafta, Çeyreklik, Saat, Dakika) veren sorguları yazalım.
Select DatePart(Year, GetDate()) As Yıl
Select DatePart(Month, GetDate()) As Ay
Select DatePart(Day, GetDate()) As Gün
Select DatePart(Week, GetDate()) As Hafta
Select DatePart(Quarter, GetDate()) As Çeyreklik
Select DatePart(Hour, GetDate()) As Saat
Select DatePart(Minute, GetDate()) As DakikaSoru: Mevcut tarihe 5 gün ve 2 ay ekleyen sorguları yazalım.
Select DateAdd(Day, 5, GetDate()) As 'Yeni Tarih'
Select DateAdd(Month, 2, GetDate()) As 'Yeni Tarih'Soru: ‘08.23.1990’ tarihine 34 yıl ekleyen sorguyu yazalım.
Select DateAdd(Year, 34, '08.23.1990') As 'Yeni Tarih'Soru: İki tarih (‘09.30.1960’ ve ‘12.30.2024’) arasındaki Gün, Ay ve Yıl farkını veren sorguları yazalım.
Select DateDiff(Day, '09.30.1960', '12.30.2024') As 'Gün Farkı'
Select DateDiff(Month, '09.30.1960', '12.30.2024') As 'Ay Farkı'
Select DateDiff(Year, '09.30.1960', '12.30.2024') As 'Yıl Farkı'Soru: Bugünün tarihinden ‘09.30.1960’ tarihini çıkaran (yıl farkını veren) sorguyu yazınız.
Select DateDiff(Year, '09.30.1960', GetDate())Soru: Personellerimizden 2021 sonrasında işe başlayanlar kimlerdir?
Select * from tbl_personeller
Where Year(ise_baslama_tarihi) > 2021Soru: Personellerimizden 2022-2024 tarihleri arasında işe başlayanlar kimlerdir?
Select * from tbl_personeller
Where ise_baslama_tarihi Between '2021' and '2024'