Fonksiyonlar, Count, Sum, Avg, Max, Mın, Lower, Upper, Length, Round, Mod, Left, Right, Concat, If
Sql kendi içinde bir cok fonksiyonu barındırır, bunlar sayım ve hesaplama için kullanılabilir.
SQL FONKSİYONLARI
Fonksiyon sözdizimi kuruluşu;
SELECT fonksiyon(kolon ) FROM tablo
Fonksiyon tipleri;
sql fonksiyonları birkaç temel tip ve kategoriye sahiptir. Temel fonksiyon tipleri:
++ Aggregate (birleşik degerli ) fonksiyonlar
++ Scalar (tekil degerli ) fonksiyonlar
Aggregate (birleşik degerli ) fonksiyonlar
Bu tip fonksiyonlar birçok deger ile çalışır ama sonucu tek bir degerdir.
Bu fonksiyonların MS Access e uygun olanları:
- AVG(kolon ):
girilen kolondaki sayıların aritmetik ortalama degerini geri yollar - COUNT(kolon ):
Boş degerler haric, girilen kolondaki satır sayısını yollar
- COUNT(* ):
Verilen tablodaki satır sayısını yollar
- FIRST(kolon ):
girilen kolondaki ilk degeri yollar
- LAST(kolon ):
girilen kolondaki son degeri yollar
- MAX(kolon ):
girilen kolondaki en yuksek degeri yollar
- MIN(kolon ):
girilen kolondaki en dusuk degeri yollar
- STDEV(kolon ):
girilen kolondaki basit istatiksel standard sapma degerini yollar
- STDEVP(kolon ):
girilen kolondaki nüfus istatiksel standard sapma degerini yollar
- SUM(kolon ):
girilen kolondaki sayıların toplamını yollar
Bu fonksiyonların sql Server a uygun olanları:
- AVG(kolon ):
girilen kolondaki sayıların aritmetik ortalama degerini geri yollar - BINARY_CHECKSUM:
tablonun verilen satırındaki ikilik tabandaki checksum degerini yollar
- CHECKSUM:
tablonun verilen satırındaki checksum degerini yollar
- CHECKSUM_AGG:
boş degerler haricindeki verilerin checksum degerini yollar
- COUNT(kolon ):
Boş degerler haric, girilen kolondaki satır sayısını yollar
- COUNT(* ):
Verilen tablodaki satır sayısını yollar
- COUNT(DISTINCT kolon ):
Verilen tablodaki satır sayısını yollar, fakat cift veri bulunan satırları bir defa sayar
- FIRST(kolon ):
girilen kolondaki ilk degeri yollar
- LAST(kolon ):
girilen kolondaki son degeri yollar
- MAX(kolon ):
girilen kolondaki en yuksek degeri yollar
- MIN(kolon ):
girilen kolondaki en dusuk degeri yollar
- STDEV(kolon ):
girilen kolondaki basit istatiksel standard sapma degerini yollar
- STDEVP(kolon ):
girilen kolondaki nüfus istatiksel standard sapma degerini yollar
- SUM(kolon ):
girilen kolondaki sayıların toplamını yollar
Scalar (tekil degerli ) fonksiyonlar
Girilen degere gore bir deger ile calısır ve sonuc olarak bir deger yollar.
Bu fonksiyonların MS Access e uygun olanları:
UCASE(c ): bolgedeki karakterlerin hepsini buyuk yapar
LCASE(c ): bolgedeki karakterlerin hepsini kucuk yapar
MID(c,start[,end] ): yazı alanından karakterleri calıstırır
INSTR(c ): yazı alanından karakterleri gosterir
LEFT(c,karakterNumarasi ): text alanının girilen sayıya kadar olan kısmını yollar (soldan sayar )
RIGHT(c,number_of_char ): text alanının girilen sayıya kadar olan kısmını yollar (sagdan sayar )
ROUND(c,hassasiyet ): sayı alanını verilen hassasiyete gore yuvarlar
MOD(x,y ): bolme işleminde kalanı gosterir (mod işlemi yapar )
NOW( ): o anki sistem zamanını gosterir
FORMAT(c,format ): alanın gosterim biçimini degiştirir
DATEDIFF(d,birinciTarih,ikinciTarih ): tarih hesaplarını yapmak için kullanılır
AVG(), SUM(), MIN(), MAX(), COUNT() :
SELECT MIN(maas) AS enazmaas FROM employee WHERE bolum='Bilgi İşlem';
Yukarıdaki sorgu bilgi işlem bölümünda çalışan ve en düşük maaşı alan personeli görünütüler. Ancak AS enazmaas eklentisi ile tabloda var olmayan harici bir alan oluşturuyoruz.Kullanmazsak sorgu yine çalışırdı ben yer gelmişken bu konuyada yer vermek istedim sadece.
SELECT MAX(maas) FROM employee WHERE bolum='Bilgi İşlem';
Bu sorgunun ne yaptığını sanırım tahmin ediyorsunuzdur :)
SELECT SUM(maas) FROM employee WHERE bolum='Bilgi İşlem';
Yukarıdaki sorgu bilgi işlem bölümünde çalışan tüm personelin maaşlarının toplamını görüntüler. Eğer bir alandaki tüm kayıtların toplamını bulmamız gerekirse SUM() fonksiyonu işimize yarayacaktır.
SELECT AVG(yas) FROM employee WHERE bolum='Halkla İlişkiler';
Yukarıdaki sorgu halkla ilişkiler bölümünde çalışan personelin yaş ortalamasını verecetir.AVG() fonksiyonu istenen alandaki verilerin aritmetik ortasını görüntüler.
SELECT COUNT(*) FROM employee;
Yukarıdaki sorgu tablodaki kayıt sayısını görüntüler;
Eğer şirketin basın yayın bölümünde çalışan evli ve maaşı 500 milyondan az olan kişilerin sayısını öğrenmek istiyorsak aşağıdaki sorgu işimizi görecektir.
SELECT COUNT(*) FROM employee WHERE maas<50000000 AND medeni_hal='evli' AND bolum='Basın Yayın'
Bazen sorgu kriterleri bir veri kümesi ile tanımlanır ve bu veri kümesi içinde aradığımızın değerin var olup olmamasına göre görüntülenmesini isteyebiliriz.
Örneğin yaşı 20,21,22,23 olmayan personelleri listelemek için IN operatörünü kullanabiliriz.
SELECT * FROM employee WHERE yas NOT IN (20,21,22,23);
Gruplandırılmış veriler üzerinde işlem
Şirektimizde ki her departmanda çalışan bayan personel sayısını bulmak ve bolu isimlerine göre gruplandırmak istersek : örneğin Bilgi İşlem 10 halkla ilişkiler 3 vs..
O zaman GROUP BY foksiyonunu kullanmamız gerekecektir.
SELECT bolum,count(*) FROM employee WHERE cinsiyet='K' GROUP BY bolum;
Bu sorgudan sonra her bölümde kaç adet bayan personelin çalıştığı listelenecektir.
SELECT count(*),cinsiyet,AVG(maas) FROM employee GROUP BY cinsiyet;
Yukarıdaki sorgu şirketimizde kaç bayan ve kaç erkek personel olduğunu ve bunların ortalama maaşlarını görüntüleyecektir.Çıktı aşağıdaki gibidir.
count( * ) cinsiyet AVG( maas )
6 K 888333333.3333
8 E 1218750000.0000
Eğer sorgumuzu ;
SELECT count( * ) AS kisi, cinsiyet, AVG( maas ) AS ortalama FROM employee GROUP BY cinsiyet;
Gibi değiştirdiğimizde sonuç tablomuz
Kisi cinsiyet Ortalama
6 K 888333333.3333
8 E 1218750000.0000
Şeklinde değişecekti.
Bazen verileri hem gruplandırmak hemde bu gruplandılmış veriler üzerinde bazı kriterlere göre seçim yapmak zorunda kalabiliriz.
Mesela en yüksek maaşın 1.000.000.000 ın üzerinde olan bölümlerde çalışan erkek personelin sayısını isteyebiliriz.
SELECT count( * ) , bolum
FROM employee
WHERE cinsiyet = 'E'
GROUP BY bolum
HAVING MAX( maas ) > 1000000000 ;
HAVING
gruplandırılmış veriler üzerinde işlem yapar ve mutlaka
min(), max(), count(), SUM(), AVG()
vs.. ile birlikte kullanılması gerekir. Dolayısıyla SELECT + GROUP BY ifadelerinin kullanılmadığı sorgularda
HAVING
kullanmak mantıksızdır. Kullanıdığınız da zaten bir hata mesajı alırsınız.
ROUND() : Yuvarlama
Yuvarlama işlemini yapar.
double round (double val) Büyük kesirli giriş, Büyük kesirli çıkış)
<?php
round( 3.4 ); // 3.0
round( 3.5 ); // 4.0
round( 3.6 ); // 4.0
?>
LOWER(), UPPER() :
LOWER() : Alan içindeki verileri küçük harfe çevirir.
UPPER() : LOWER ın tersi, yani küçük karakterleri büyüğe dönüştürüyor.
Kaynak: www.webhocam.net/Dersler.asp