Son Haberler
Anasayfa / Yazılım / SQL / Toplama Fonksiyonlarının DISTINCT ile Birlikte Kullanımı

Toplama Fonksiyonlarının DISTINCT ile Birlikte Kullanımı

DISTINCT deyimi toplama fonksiyonları ile birlikte kullanılabilir. Örneğin bir kolon için o kolondaki satır sayılarının yerine eşsiz değerlerin sayısını listelemek isteyebiliriz. İşte bu eşsiz değerler üzerinde toplama fonksiyonu da kullanmak istediğimizde bu sefer DISTINCT ile birlikte aggregate fonksiyonlar yani toplama fonksiyonları birlikte kullanılabilir. Örnekler ile konumuza devam edelim :

1)

SELECT COUNT(*) AS "Satır Sayısı", COUNT(SalesPersonID) AS "Satış Personeli Sayısı",
COUNT(DISTINCT SalesPersonID) AS "Benzersiz Satış Personeli Sayısı"
FROM Sales.SalesOrderHeader

Sorgumda 3 tane COUNT fonksiyonu mevcut. İlk Count ile tablodaki tüm satırları sayıyorum. İkinci Count ile SalesPersonID kolonundaki satırları sayıyorum. Bu ikincisinde daha az veri dönecek çünkü tablomda NULL veriler COUNT fonksiyonunda listelenmiyor. Son olarak üçüncü Count ifadesi ile bu sefer benzersiz SalesPersonID değerine göre listeleme yapıyorum. Sonuç :

2013031725

2)

SELECT SUM(TotalDue) AS TotalAllOrders, 
SUM(DISTINCT TotalDue) AS TotalDistinctTotalDue 
FROM Sales.SalesOrderHeader;

Bu seferde SUM fonksiyonu ile birlikte DISTINCT fonksiyonunu kullanıyorum.

2013031726

3) Sales.SalesOrderDetail tablosunu kullanarak benzersiz ProductID kolonuna göre sipariş edilen ürünlerin sayısını bulalım.

SELECT COUNT(DISTINCT ProductID) AS "Sipariş Edilen Ürünlerin Sayısı" 
FROM Sales.SalesOrderDetail

2013031727

4) Sales.SalesOrderHeader tablosunu kullanarak CustomerID gruplarına göre benzersiz TerritoryID durumunu dikkate alarak TerritoryID’leri sayalım.

SELECT CustomerID, COUNT(DISTINCT TerritoryID) AS "Bölge ID Sayısı"
FROM Sales.SalesOrderHeader GROUP BY CustomerID;

2013031728

3 yorum

  1. COUNT(distinct(urunid)) AS urunid bu kod bütün sorunlarımı çözdü saolasın valla COUNT() eklememişim sorguya o yüzden toplam sonuç sayısını bi türlü alamıyodum COUNT ile sorunu çözdüm sayende

  2. Çok teşekkür ederim

  3. Merhaba

    Benim ham_stok adında tablom ve bu tabloma ait tarih(datetime),irsaliye(nvarchar),malzeme(nvarchar),metraj(nvarchar),cikan_metraj(nvarchar) adlarında alanlarım var benim istediğim 10.000 metre altında kaç tane malzeme varsa sayısını versin

    kullandığım kod ise
    select count(distinct malzeme) from ham_stok having (sum(convert(decimal metraj)) – sum (convert(decimal,cikan_metraj))<10000)

    ben örnek olarak 5 farklı malzeme giriş ve çıkışı yaptım ve bunların 4 tanesi 10.000 metrenin altında yukarıdaki kodu yazdığımda "0" sonucunu "10000" den büyük yaptığımda ise "5" sonucunu veriyor bu konuyla ilgili yardımcı olursanız sevinirim.

Bir cevap yazın

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