Aryasoft Bilgi Teknolojileri > Posts > SQL Server > Level 1 > SQL Server’da AGGREGATE (Hesaplama) Fonksiyonları

SQL Server’da AGGREGATE (Hesaplama) Fonksiyonları

Bazen tablolar üzerinde kayıtların listelenmesi yerine kayıtlar üzerinde hesaplamalar yaptırarak sonuçların listelenmesine ihtiyaç duyarız. Bu nedenle tüm kayıtları döndürmeden sadece matematiksel sonuçlar döndürmemiz gerekebilir. SQL bu gibi durumlar için özel fonksiyonlar sunmaktadır. Bu Fonksiyonlara Aggregate Function (Hesaplama Fonksiyonları) denir. Peki bu fonksiyonlar bizlere neler sunmaktadır ; sütundaki tüm değerlerin toplamını bulmak, sütundaki tüm degerlerin ortalamasını…

April 10, 2023 by Aryasoft IT

Bazen tablolar üzerinde kayıtların listelenmesi yerine kayıtlar üzerinde hesaplamalar yaptırarak sonuçların listelenmesine ihtiyaç duyarız. Bu nedenle tüm kayıtları döndürmeden sadece matematiksel sonuçlar döndürmemiz gerekebilir. SQL bu gibi durumlar için özel fonksiyonlar sunmaktadır. Bu Fonksiyonlara Aggregate Function (Hesaplama Fonksiyonları) denir.

Peki bu fonksiyonlar bizlere neler sunmaktadır ; sütundaki tüm değerlerin toplamını bulmak, sütundaki tüm degerlerin ortalamasını bulmak, sütundaki en büyük veya en küçük değeri bulmak, Toplam kayıt sayılarını hesaplamak.

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 (*) 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.

NOT: Vereceğim örneklerde Nortwind db’ini kullanacağım.

SUM() KULLANIMI

SUM() fonksiyonu ile belirtilen alandaki değerlerin toplamı elde edilir. Örneğin elimizdeki ürünlerin toplam değerini bulmak için kullanılabilir veya elimizdeki toplam stok adedini bulabiliriz.

Sadece sayısal alanlarda kullanılabilir.Yani, metin ve tarih gibi veri türlerinde kullanılamaz. Ayrıca, “SUM()” fonksiyonu sadece NULL değerlerini dikkate almaz. Eğer NULL değerlerin de dikkate alınması gerekiyorsa, “SUM(col_name)” ifadesi yerine “SUM(COALESCE(col_name, 0))” ifadesi kullanılmalıdır. Bu ifade, “col_name” sütunundaki NULL değerleri 0 ile değiştirerek toplama işlemini gerçekleştirir.

SELECT SUM(sütun_adı)

FROM tablo_adı

WHERE koşul;

  • Örneğin, Toplam kaç adet malın sipariş verildiğini bulalım.

SELECT SUM(Quantity) AS Toplam_Ürün

FROM [Order Details]

MIN() KULLANIMI

MIN() fonksiyonu belirtilen alandaki en küçük değeri verir. Tablomuzda 100 lerce ürün kaydının olduğunu düşünün. En düşük fiyatın ne olduğunu bulmak istediğimiz durumda tek tek fiyatları kontrol edip en ucuz fiyatı bulabiliriz. Ancak bu oldukça büyük bir zaman kaybına yol açacaktır. Bunun yerine bir sql kodu ile sonuca direk ulaşabiliriz. Aynı şekilde muhasebe departmanı müdürü veya şirektin genel müdürü, personele ödediği en düşük maaşı görmek isteyebilir. Bu durumda da bir sql kodu ile sonuca gidebiliriz.

Sadece sayısal alanda değil aynı zamanda da metinsel alanlarda da kullanılabilir. Bu durumda metinsel veriyi A’dan Z’ye dizip en baştaki kaydı (A ile başlayan kayıtları) verecektir.

SELECT MIN (sütun_adi)

FROM tablo_adi

WHERE koşul;

  • Ürünler (Products) tablosundaki en küçük fiyatlı ürünü listeleyelim.

SELECT MIN(UnitPrice) AS Minimum_Fiyat

FROM Products

MAX() KULLANIMI

MAX() fonksiyonu belirtilen alandaki en büyük değeri verir. Sadece sayısal alanda değil aynı zamanda da metinsel alanlarda da kullanılabilir. Bu durumda metinsel veriyi A’dan Z’ye dizip en sondaki kaydı verecektir.

SELECT MAX (sütun_adi)

FROM tablo_adi

WHERE koşul;

  • Ürünler (Products) tablosundaki en yüksek fiyatlı ürünü listeleyelim.

SELECT MAX(UnitPrice) AS Maksimum_Fiyat

FROM Products

AVG() KULLANIMI

AVG() fonksiyonu ile belirtilen alandaki değerlerin ortalaması elde edilir. Elimizdeki ürünlerin ortalama değerini bulmak için kullanılabilir.

Sadece sayısal alanlarda kullanılabilir.

SELECT AVG (sütun_adi)

FROM tablo_adi

WHERE koşul;

  • Örneğin, 22 kayıt numaralı tedarikçiye ait ürünlerin tekil değerilerinin ortalama fiyatını almak isteyelim.

SELECT AVG(DISTINCT UnitPrice) AS tekil_ortalama_deger

FROM Products

WHERE SupplierID = 22

COUNT() KULLANIMI

Daha önce yayınladığımız makalede count() fonk kullanımını daha detaylı incelemiştik. Göz atmak isterseniz linke tıklayabilirsiniz https://aryasoft.com.tr/2023/05/05/sql-server-count-fonksiyonu-kullanimi/

Belirtilen şartlara göre listelenen satır sayısını döndürür.

SELECT COUNT (sütun_adi)

from tablo_adi

where koşul;

  • Tedarikci Numarası (SupplierID) 5 olan tedarikçiye ait ürünlerin sayısını öğrenelim.

SELECT COUNT(*) AS Ürün_Sayısı

FROM Products

WHERE SupplierID = 5

COUNT() DISTINCT KULLANIMI

DISTINCT ifadesi COUNT ile birlikte kullanıldığında, belirtilen sütundaki benzersiz kayıtların sayısını verir.

SELECT COUNT (DISTIMCT sütun_adi)

from tablo_adi

where koşul;

  • Son örneğimiz olarak siparişlerin kaç farklı müşteriden alındığını öğrenelim.

SELECT COUNT (DISTINCT CustomerID)

FROM Orders

 

Size ve Veritabanlarınıza Yardımcı Olmak İçin Bekliyoruz!