Mın, Lower, Upper, Length, Round, 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 ): 1
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 :) 2
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. 3
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. 4
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 5