Softmush.com, teknoloji, yazılım ve dijital dünyaya dair derinlemesine içeriklerle bilgiye ulaşmanın güvenilir adresi. - Softmush.com
“ Söz konusu olan vatansa, gerisi teferruat. ”
Mustafa K. Atatürk
SQL Aggregate Functions: Veri Kümelerini Özetleme ve Analiz Etme Rehberi

SQL Aggregate Functions: Veri Kümelerini Özetleme ve Analiz Etme Rehberi

SQL (Structured Query Language), veritabanlarındaki büyük veri kümelerini yönetmek ve analiz etmek için temel bir araçtır. Bu analizin kritik bir parçası, veri gruplarını özetlemeye ve tek bir anlamlı değer döndürmeye yarayan Aggregate Functions (Toplama Fonksiyonları) olarak bilinen özel işlevlerdir. Bu fonksiyonlar, bir sütundaki tüm değerlerin toplamını, ortalamasını, en büyük veya en küçük değerini veya toplam satır sayısını hesaplamak gibi işlemleri gerçekleştirmek için kullanılır. Bu makale, SQL Aggregate Functions'ın temel prensiplerini, sözdizimini, pratik kullanım örneklerini ve önemli notları kapsamlı bir şekilde açıklamaktadır.


Sözdizimi


SQL Aggregate Functions, genellikle SELECT ifadesi içinde, isteğe bağlı olarak GROUP BY, WHERE ve HAVING yan tümceleriyle birlikte kullanılır. Genel sözdizimi aşağıdaki gibidir:

SELECT
    kolon_adı_1,
    AGGREGATE_FUNCTION(kolon_adı_2) AS takma_ad
FROM
    tablo_adı
WHERE
    koşul_filtreleme_satırlar
GROUP BY
    kolon_adı_1
HAVING
    koşul_filtreleme_gruplar
ORDER BY
    kolon_adı_1;

Detaylı Açıklama


Yukarıdaki sözdizimindeki her bir bileşen, agrega fonksiyonlarının nasıl çalıştığını anlamak için hayati öneme sahiptir:


  • SELECT: Sorgunuzdan döndürülecek sütunları belirtir. Agrega fonksiyonları bu bölümde kullanılır ve genellikle bir AS anahtar kelimesi ile bir takma ad (alias) atanır.


  • AGGREGATE_FUNCTION(kolon_adı_2): Veriler üzerinde işlem yapacak olan toplama fonksiyonudur. En yaygın kullanılanlar şunlardır:


    • COUNT(): Belirli bir sütundaki veya tüm satırlardaki eleman sayısını döndürür. COUNT(*) tüm satırları sayar, COUNT(kolon_adı) NULL olmayan değerleri sayar, COUNT(DISTINCT kolon_adı) ise benzersiz NULL olmayan değerleri sayar.


    • SUM(): Belirli bir sayısal sütundaki tüm değerlerin toplamını hesaplar.


    • AVG(): Belirli bir sayısal sütundaki tüm değerlerin ortalamasını hesaplar.


    • MIN(): Belirli bir sütundaki en küçük değeri döndürür.


    • MAX(): Belirli bir sütundaki en büyük değeri döndürür.


  • FROM tablo_adı: Verilerin çekileceği tablonun adını belirtir.


  • WHERE koşul_filtreleme_satırlar: Agrega işlemi yapılmadan önce satırları filtrelemek için kullanılır. Bu yan tümce, gruplama yapılmadan önceki bireysel satırlara uygulanır.


  • GROUP BY kolon_adı_1: Satırları bir veya daha fazla sütuna göre gruplar. Agrega fonksiyonu daha sonra her grup için ayrı ayrı uygulanır ve her gruptan tek bir özet satırı döndürülür. SELECT listesinde agrega fonksiyonu dışında kalan her sütunun GROUP BY listesinde de yer alması gerekir.


  • HAVING koşul_filtreleme_gruplar: GROUP BY ile oluşturulan grupları filtrelemek için kullanılır. WHERE yan tümcesinin aksine, HAVING ifadesi agrega fonksiyonlarının sonuçlarına dayalı filtreleme yapabilir.


  • ORDER BY kolon_adı_1: Sonuç kümesini belirli bir sütuna veya agrega sonucuna göre sıralar.


Pratik Kullanım Örnekleri


Aşağıdaki örnekler için, bir şirketin satış verilerini içeren Satislar adlı bir tablo ve çalışan bilgilerini içeren Calisanlar adlı bir tablo kullanıldığını varsayalım.


Satislar Tablo Yapısı:

CREATE TABLE Satislar (
    SatisID INT PRIMARY KEY,
    UrunID INT,
    MusteriID INT,
    SatisTarihi DATE,
    Miktar DECIMAL(10, 2),
    Adet INT
);

INSERT INTO Satislar (SatisID, UrunID, MusteriID, SatisTarihi, Miktar, Adet) VALUES
(1, 101, 1, '2023-01-15', 150.75, 2),
(2, 102, 2, '2023-01-15', 200.00, 1),
(3, 101, 1, '2023-01-16', 75.50, 1),
(4, 103, 3, '2023-01-16', 300.25, 3),
(5, 102, 1, '2023-01-17', 120.00, 1),
(6, 101, 4, '2023-01-17', 50.00, 1),
(7, 104, 2, '2023-01-18', 450.00, 2),
(8, 101, NULL, '2023-01-18', 100.00, 1);

Calisanlar Tablo Yapısı:

CREATE TABLE Calisanlar (
    CalisanID INT PRIMARY KEY,
    Ad VARCHAR(50),
    Soyad VARCHAR(50),
    Departman VARCHAR(50),
    Maas DECIMAL(10, 2)
);

INSERT INTO Calisanlar (CalisanID, Ad, Soyad, Departman, Maas) VALUES
(1, 'Ayşe', 'Yılmaz', 'IT', 60000.00),
(2, 'Can', 'Demir', 'Satış', 55000.00),
(3, 'Elif', 'Kaya', 'IT', 62000.00),
(4, 'Mert', 'Arslan', 'Pazarlama', 58000.00),
(5, 'Zeynep', 'Şahin', 'Satış', 59000.00),
(6, 'Deniz', 'Çelik', 'Pazarlama', 57000.00);

1. Toplam Satış Sayısını Bulma (COUNT(*))


Bu sorgu, Satislar tablosundaki toplam satış kaydını döndürür.

SELECT
    COUNT(*) AS ToplamSatisSayisi
FROM
    Satislar;

2. Belirli Bir Kolondaki NULL Olmayan Değer Sayısı (COUNT(kolon_adı))


MusteriID değeri olan (yani NULL olmayan) satışların sayısını bulur.

SELECT
    COUNT(MusteriID) AS MusteriliSatisSayisi
FROM
    Satislar;

3. Benzersiz Müşteri Sayısını Bulma (COUNT(DISTINCT kolon_adı))


Kaç farklı müşterinin satış yaptığını gösterir.

SELECT
    COUNT(DISTINCT MusteriID) AS BenzersizMusteriSayisi
FROM
    Satislar;

4. Toplam Satış Miktarını Hesaplama (SUM())


Tüm satışların toplam miktarını döndürür.

SELECT
    SUM(Miktar) AS ToplamSatisMiktari
FROM
    Satislar;

5. Ortalama Satış Miktarını Hesaplama (AVG())


Tüm satışların ortalama miktarını döndürür.

SELECT
    AVG(Miktar) AS OrtalamaSatisMiktari
FROM
    Satislar;

6. En Yüksek ve En Düşük Satış Miktarını Bulma (MAX(), MIN())


En yüksek ve en düşük satış miktarını aynı sorguda bulur.

SELECT
    MAX(Miktar) AS EnYuksekSatisMiktari,
    MIN(Miktar) AS EnDusukSatisMiktari
FROM
    Satislar;

7. Her Ürün İçin Toplam Satış Miktarını ve Adedini Bulma (GROUP BY)


Bu sorgu, her bir UrunID için toplam satış miktarını ve satılan toplam adedi hesaplar.

SELECT
    UrunID,
    SUM(Miktar) AS ToplamMiktar,
    SUM(Adet) AS ToplamAdet
FROM
    Satislar
GROUP BY
    UrunID
ORDER BY
    UrunID;

8. Belirli Bir Eşiğin Üzerinde Toplam Satışa Sahip Ürünleri Listeleme (HAVING)


Sadece toplam satış miktarı 200'den büyük olan ürünleri listeler.

SELECT
    UrunID,
    SUM(Miktar) AS ToplamMiktar
FROM
    Satislar
GROUP BY
    UrunID
HAVING
    SUM(Miktar) > 200
ORDER BY
    ToplamMiktar DESC;

9. Departmanlara Göre Ortalama Maaş ve Çalışan Sayısı (GROUP BY ve Farklı Fonksiyonlar)


Her departmandaki ortalama maaşı ve çalışan sayısını gösterir.

SELECT
    Departman,
    AVG(Maas) AS OrtalamaMaas,
    COUNT(CalisanID) AS CalisanSayisi
FROM
    Calisanlar
GROUP BY
    Departman
HAVING
    COUNT(CalisanID) > 1 -- Birden fazla çalışanı olan departmanlar
ORDER BY
    OrtalamaMaas DESC;

Önemli Notlar


  • NULL Değerler: SUM(), AVG(), MIN(), MAX() gibi çoğu agrega fonksiyonu, hesaplamalarında NULL değerleri göz ardı eder. COUNT(kolon_adı) da yalnızca NULL olmayan değerleri sayarken, COUNT(*) NULL değerleri içeren satırları da sayar.


  • WHERE vs. HAVING: WHERE yan tümcesi, gruplama yapılmadan önce bireysel satırları filtreler. HAVING yan tümcesi ise, GROUP BY işlemi uygulandıktan sonra oluşan grupları filtrelemek için kullanılır ve agrega fonksiyonlarının sonuçlarını kullanabilir.


  • GROUP BY Kısıtlamaları: SELECT ifadesinde agrega fonksiyonu kullanmıyorsanız ve GROUP BY kullanıyorsanız, SELECT listesindeki tüm sütunların GROUP BY listesinde de yer alması gerekir (veya agrega fonksiyonları içinde olmaları gerekir). Aksi takdirde, SQL veritabanı hangi değerin her grup için döndürüleceğini bilemez ve bir hata verir.


  • DISTINCT Anahtar Kelimesi: COUNT(DISTINCT kolon_adı), SUM(DISTINCT kolon_adı), AVG(DISTINCT kolon_adı) gibi kullanımlar, yalnızca belirtilen sütundaki benzersiz değerler üzerinde işlem yapar. Örneğin, SUM(DISTINCT Miktar), aynı miktara sahip birden fazla satış olsa bile her miktarı yalnızca bir kez toplar.


  • Performans: Büyük veri kümelerinde agrega fonksiyonlarının kullanımı, özellikle GROUP BY ve ORDER BY ile birleştiğinde performans üzerinde etkili olabilir. Uygun indeksleme, sorgu performansını artırmada önemli rol oynar.


Yayınlanma Tarihi: 2025-10-17 01:00:32
JavaScript Dilinde JS Math Kullanımı
Önceki Haber

JavaScript Dilinde JS Math Kullanımı

JavaScript Makaleleri
Sonraki Haber

PHP Dilinde Öznitelikler (Attributes) Kullanımı: Derinlemesine Bir Kılavuz

PHP Makaleleri
PHP Dilinde Öznitelikler (Attributes) Kullanımı: Derinlemesine Bir Kılavuz

Yorum yap

Yorum yapabilmek için  giriş  yapmalısınız.

Yorumlar

Bu yazı hakkında henüz yorum yapılmamıştır.
× SQL Dilinde SUM Fonksiyonu: Detaylı Kullanım Kılavuzu
Bu ilginizi çekebilir

SQL Dilinde SUM Fonksiyonu: Detaylı Kullanım Kılavuzu

SQL (Yapısal Sorgulama Dili), veritabanlarından bilgi almayı ve manipüle etmeyi sağlayan...