Anasayfa / Yazılım / SQL / Toplama Fonksiyonları

Toplama Fonksiyonları

MS SQL’de oluşturduğumuz sorgular sonucu geriye dönen verileri yorumlamak bu veriler içinde minimum, maximum, toplam, ortalama ve verilerin sayısal değerini hesaplamak için toplama fonksiyonları olarak adlandırdığımız aggregate fonksiyonları kullanırız. Daha önceki yazılarımda matematiksel fonksiyonları tek bir veri işlemi üzerinde anlatmıştım. Bu fonksiyonları yalnızca tek bir veri üzerinde değil aynı zamanda birden fazla veri satırı üzerinde de işlem yapmamıza olanak sağlar.

Örneğin bir e-ticaret sitesi için yapılan tüm siparişlerin sayısını ve bu siparişlerin toplam tutarını listelemek, hesaplamak için bu fonksiyonu kullanırız. Bir kerede en az hangi sipariş değeri veya en fazla sipariş değerini bulabiliriz. Yapılan sipariş sayısı ve elde edilen gelire göre her sipariş başına elde edilen ortalama geliri bulabiliriz. En sık kullanılanları :

COUNT: Sorgu sonucu geriye dönen verilerin satırlarını veya herhangi bir kolon içinde yer alan verilerin (NULL verileri saymaz, hesaba katmaz) sayısını elde etmek için kullanılır.

SUM: Sayısal değerleri numerik olarak toplamak için kullanılır.

AVG: Sayısal değerlerin ortalamasını bulur.

MIN: Herhangi bir veri kümesindeki en küçük değeri bulur. Sayısal değerler üzerinde kullanılabildiği gibi string değerler üzerinde de kullanılabilir.

MAX: Herhangi bir veri kümesindeki en büyük değeri bulur. Sayısal değerler üzerinde kullanılabildiği gibi string değerler üzerinde de kullanılabilir.

Bu fonksiyonları kullanırken bazı dikkat edilecek noktalar vardır. Bu noktalar :

  • AVG ve SUM fonksiyonları sadece sayısal değerler üzerinde kullanılabilirler.
  • MIN, MAX ve COUNT fonksiyonları sayısal, string ve geçici veri sütunları üzerinde kullanılabilirler.
  • Bu fonksiyonlar TEXT, NTEXT ve IMAGE veri tipindeki kolonlar üzerinde kullanılmaz.
  • Bu fonksiyonlar NULL değerleri hesaba katmaz, yok sayar. Özellikle COUNT işlemleri için bu duruma dikkat etmek gerekir.
  • Eğer COUNT ile birlikte asterisk yani (*) kullanılırsa tüm satırların verilerini (kolonda NULL veri olsa bile) sayabiliriz.
  • Toplama fonksiyonunun kullanıldığı bir sorgu artık toplama işlevli bir sorgu olmuş olur.
  • Syntax yani söz dizimi olarak kullanımı aşağıdaki gibidir :

    SELECT Kullanılacak Fonksiyon (KolonAdı) FROM TabloAdı

    Şimdi bir kaç uygulama ile yazımıza devam edelim. AdventureWorks2012 veri tabanı üzerinde çalışıyorum.

    SELECT COUNT(*) AS "Satır Sayısı", MAX(TotalDue) AS "Maksimum Değer",
    MIN(TotalDue) AS "Minimum Değer", SUM(TotalDue) AS "Toplam Değer",
    AVG(TotalDue) AS "Ortalama Değer" FROM Sales.SalesOrderHeader

    Sorgumuzda Sales.SalesOrderHeader tablosundaki TotalDue kolonunda yer alan tüm veriler için, bunu asterisk (*) kullanarak belirtiyoruz, verilerin sayıları (COUNT), veriler içindeki maksimum değer (MAX), veriler içindeki minimum değer (MIN), verilerin değerlerinin toplamını (SUM ve verilerin değerlerinin toplamının ortalamasını (AVG) ile listeliyoruz.

    2013031301

    Bir diğer sorgumuz :

    SELECT MIN(Name) AS "En Kısa İsim", MAX(Name) AS "En Uzun İsim",
    MIN(SellStartDate) AS "Satış Tarihleri İçinde En Erken Tarih",
    MAX(SellStartDate) AS "Satış Tarihleri İçinde En Geç Tarih" FROM Production.Product

    Bu sorgumuzda da Production.Product tablosundaki en uzun ve en kısa isimleri NAME kolonundaki veriler içinden listeliyoruz. Aynı zamanda yine MIN ve MAX fonksiyonunu kullanarak aynı tablo üzerindeki SellStartDate kolonundaki yapılan satışların bilgisi içinden en erken ve en geç olan satışların tarihlerini listeliyoruz.

    2013031302

    Şimdi de Sales.Customer tablosunda yer alan müşterilerin kaç tane olduğunu bulan sorguyu yazalım :

    SELECT COUNT(*) AS "Müşteri Sayısı" FROM Sales.Customer

    2013031303

    Sales.SalesOrderDetail tablosunda yer alan sipariş edilen ürünlerin toplam sayısını bulalım :

    SELECT SUM(OrderQty) AS "Toplam Sipariş Edilen Ürün Sayısı" FROM Sales.SalesOrderDetail

    2013031304

    Sales.SalesOrderDetail tablosunda UnitPrice kolonundaki veriler içinde yer alan en pahalı sipariş edilen ürünün fiyat bilgisini listeleyelim :

    SELECT MAX(UnitPrice) AS "En Pahalı Sipariş Edilen Ürün Fiyatı" 
    FROM Sales.SalesOrderDetail

    2013031305

    Sales.SalesOrderHeader tablosunda Freight kolonunda yer alan bilgilere göre ortalama yüm miktarını bulalım.

    SELECT AVG(Freight) AS "Ortalama Yük Miktarı" FROM Sales.SalesOrderHeader

    2013031306

    Production.Product tablosundaki ListPrice kolonunda yer alan verilere göre bu veriler içindeki minimum, maksimum ve ortalama değeri bulalım.

    SELECT MIN(ListPrice) AS "Minimum Fiyat", MAX(ListPrice) AS "MAksimum Fiyat",
    AVG(ListPrice) AS "Ortalama Fiyat" FROM Production.Product

    2013031307

    Bir Cevap Yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir