COUNT() fonksiyonu, belirtilen ölçütlerle eşleşen satır sayısını döndürür. Kısacası veritabanındaki kayıtları sayabilmek için yerleşik COUNT() fonksiyonunu kullanırız.

Parantez içinde tanımlanan kriterleri karşılayan satır sayısını sayar. Satırların kendisini döndürmez; kriterlerinize uyan satır sayısını gösterir.

Peki SQL COUNT() işlevinin farklı varyasyonları olduğunu fark etmiş miydiniz? Bu makalede çeşitli bağımsız değişkenleri ve bunların kullanımlarını açıklamış olacağım.

COUNT(*) – COUNT(1) karşılaştırması

COUNT(*) ve COUNT(1) arasındaki farklar hakkında çeşitli tartışmalar görmüş olabilirsiniz. Ve belki de cevabı bulmaya çalışmak kafanızı daha da karıştırmış olabilir. Herhangi bir fark var mı diye soracak olursanız cevap basit. Hayır – hiçbir fark yok.

COUNT(*), NULL değerler de dahil olmak üzere tablodaki toplam satırları sayar.

COUNT(1) , sorgu sonuç kümesindeki tüm kayıtları 1 değeriyle değiştirir. NULL değerleriniz varsa, bu da 1 ile değiştirilir. Bu nedenle, COUNT(1) ayrıca toplam kayıt sayısını (NULL’lar dahil) döndürür.

Ancak, COUNT(*) ve COUNT(1) için sonuçlar aynıdır.

Bu iddiayı örnek bir sorgu kullanarak test edelim. İçinde 11 kayıt bulunan ofis adında geçici bir tablomuz olduğunu varsayalım. İlk 10 kayıt NOT NULL iken, son kayıtlar NULL.

No alt text provided for this image

Fonksiyon olarak * kullanıldığında, NULL’lar da dahil olmak üzere toplam satır sayısını sayar.

Örnekte, tabloda 11 satırımız olduğu için sonuç olarak 11 alacağız.

No alt text provided for this image

COUNT(1) ile ilgili kayıtları ilk sütundan itibaren saydığı şeklinde yanlış bir kanı vardır. COUNT(1)’in gerçekte yaptığı şey, sorgu sonucundan elde ettiğiniz tüm kayıtları 1 değeriyle değiştirip satırları saymaktır, yani bir NULL’u bile 1 ile değiştirerek sayarken NULL’ları dikkate alır.

Uygulamalı olarak görecek olursak, aşağıdaki resimde 11. satıra dikkat edin. Tablomuzda, sütun adı için 11. satır NULL’dur, ancak SELECT 1 FROM #office yaptığımızda, bu NULL’u 1 ile değiştirir ve bu nedenle satırları saydığımızda 10 değil 11 elde ederiz.

No alt text provided for this image

Dolayısıyla, her ikisi de sayarken NULL’ları dikkate aldığından, COUNT(1) ve COUNT(*) her zaman aynı sayıda satır döndürecektir.

No alt text provided for this image

Peki COUNT(column_name) Fonksiyonu Ne Yapar?

Fonksiyon olarak bir sütun adı (column_name) kullanıldığında, NULL’lar hariç toplam satır sayısını sayar, yani NULL’ları dikkate almaz.

Örneğimizde id sütununu saydığımızda 11, name sütununu saydığımızda ise 10 elde edeceğiz. Ofis tablosunu sorgulayarak kontrol edelim.

No alt text provided for this image

No alt text provided for this image

Son olarak çok merak edilen bir soru ile makaleyi tamamlamak istiyorum.

COUNT(*) COUNT(1)  Arasında Performans Farkı Var Mı?

Sonuç olarak COUNT(1) ve COUNT(*) birbirinin yerine kullanılabilen ve aynı sonucu döndüren yapılardır. Her ikisi de NULL değerleri göz ardı etmez ve her ikisi de belirli bir tablonun satır sayısını döndürür. Kolon sayısı fazla olan tablolarda COUNT(*) kullandığınızda performans kaybı yaşayabileceğiniz için COUNT(*) fonksiyonu dikkatli kullanılmalıdır.

Özetle;

COUNT(*) NULL’lar dahil tüm satırları sayar,

COUNT(1) NULL’lar dahil tüm satırları sayar,

COUNT(sütun_adı) tüm satırları sayar ancak NULL’ları saymaz

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: 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;
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;
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;
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;
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/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;
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;
SELECT COUNT (DISTINCT CustomerID) FROM Orders  

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

İletişime geçerek hemen destek alabilirsiniz.

İletişim