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

  round3.4 ); // 3.0

  round3.5 ); // 4.0

  round3.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

Yorumunuzu Ekleyin
Fonksiyonlar, Count, Sum, Avg, Max, Mın, Lower, Upper, Length, Round, Mod, Left, Right, Concat, If Yorumları +2 Yorum
  • volkan
    1
    volkan
    Bİ TABLO VAR en yüksek maas olanın adını yazın diyor nasıl yapabilirim
    16 Aralık 2013 19:49:59, Pazartesi
  • aykut
    1
    aykut
    viem concat hakkında bilgi?
    17 Nisan 2014 13:51:52, Perşembe


Yükleniyor...
Yükleniyor...