51 Toplam (Aggregate) fonksiyonları
Aggregate fonksiyonları genellikle group by ve having ile kullanılırlar. Ama tüm tablo üzerinde de çalışırlar.
Fonksiyon | Tanım |
---|---|
MIN | En düşük değer |
MAX | En yüksek değer |
COUNT | Kayıt sayısı |
SUM | Toplam değer |
AVG | Averaj değer |
DISTINCT|ALL ifade) aggregate_function(
kullanılabilir.
Aşağıdaki sorgu 3 farklı değer, 59,57,59 döndürecektir çünkü çalışan tablosunda aynı FirstName değerleri vardır. Eğer kullanılmazsa ALL varsayılan değerdir.
SELECT COUNT(c.FirstName),
COUNT(DISTINCT c.FirstName),
COUNT(ALL c.FirstName)
FROM Customer c;
Ifade genellikle bir kolon ismidir ama SQL’in anladığı tüm ifadeler kullanılabilir. Örneğin aşağıda ismi E ile başlayanlar için 0 veya 1 dönüyor. Arkasından bu ifade toplanarak kaç tane ismin E ile başladığı görülebiliyor. Bu ifade yerinde where içinde gördüğümüz <,= IS NULL gibi operatorler kullanılabilir.
SELECT SUM(c.FirstName LIKE 'E%')
FROM Customer c;
Count
Aşağıdaki sorgu Müşteri tablosundaki kayıt sayısını getirir.
SELECT COUNT(*) FROM Customer;
COUNT() ile COUNT(KolonAdi) null değerlerde farklı çalışır. COUNT() tüm değerleri sayarken, COUNT(KolonAdi) sadece null olmayan değerleri sayar.
Aşağıdaki sorgu Müşteri tablosundaki kayıt sayısını doğru getirir çünkü CustomerId kolonu not null (null’a izin yok) bir kolondur.
SELECT COUNT(CustomerId) FROM Customer;
Ama aşağıdaki sorgu 55 değerini getirecektir çünkü PostalCode null olan satırlar vardır.
SELECT COUNT(PostalCode) FROM Customer;
Aşağıdaki sorgu her albumdeki parça sayısını göstermektedir.
SELECT
t.AlbumId,COUNT(t.TrackId) AS ParcaSayisi
FROM Track t
GROUP BY t.AlbumId
ORDER BY 2
SUM
Verilen kolon değerlerini toplar.
Aşağıdaki sorgu toplam invoice değerini getirir.
SELECT SUM(Total) FROM Invoice i;
SUM kullanarak belirli bir duruma uyan kayıt sayısı bulunabilir.
SELECT SUM(c.SupportRepId IS NULL)
SUM(c.SupportRepId IS NOT NULL)
,SUM(c.FirstName LIKE 'A%')
,FROM Customer c;
Aşağıdaki sorgu album uzunluğunu dakika olarak bulur.
SELECT
t.AlbumId,SUM(t.Milliseconds) / 60_000 AS UzunlukDakika
FROM Track t
GROUP BY t.AlbumId
AVG
Verilen kolon değerlerininin averajını bulur.
SELECT AVG(Total) FROM Invoice i;
Aşağıdaki sorgu parçaların (track) dakika olarak ortalama süresini bulur.
SELECT
t.AlbumId,ROUND(AVG(t.Milliseconds) / 60_000) AS AverajDakika
FROM Track t
GROUP BY t.AlbumId
MIN
Verilen kolon değerlerininin minimum olanını bulur.
SELECT MIN(Total) FROM Invoice i;
Aşağıdaki sorgu en kısa parçayı saniye olarak bulur.
SELECT
MIN(t.Milliseconds) / 1_000 AS EnKısaParcaSaniye
FROM Track t
MAX
Verilen kolon değerlerininin maksimum olanını bulur.
SELECT MAX(Total) FROM Invoice i;
Aşağıdaki sorgu en uzun parçayı bulur.
SELECT
MAX(t.Milliseconds) / 60_000 AS EnUzunParça
FROM Track t