Red Kit

WFN Üye
Konular
631
Mesajlar
631
Çözüm
0
Ticaret Puanı
0
Üyelik
24 Gün
Konum
Adana
Web Sitesi
Var
Alanı
Makale Yazarı
1/1
Konu sahibi
Bir tablodaki sayısal değerlerin toplamını SUM(), ortalamasını AVG() ve kayıt sayısını COUNT(*) ile aynı sorguda hesaplayabilirsiniz. Sorguyu veritabanına bağlı bir SQL aracında çalıştırdığınızda sonuç tek satırda görünür. Ortalama hesaplanırken NULL değerler, yani değeri bilinmeyen veya girilmemiş alanlar hesaba katılmaz.

Toplamı, ortalamayı ve kayıt sayısını sorgulama​


Tablonuzu ve sayısal sütununuzu belirleyin. Aşağıdaki varsayımsal örnekte tablo adı satislar, satış tutarını içeren sütun ise tutar olarak kullanılmıştır. SQL aracında doğru veritabanına bağlanın, bu adları kendi tablo ve sütun adlarınızla değiştirin ve sorguyu çalıştırın:

SQL:
SELECT
    SUM(tutar) AS toplam_tutar,
    AVG(tutar) AS ortalama_tutar,
    COUNT(*) AS kayit_sayisi,
    COUNT(tutar) AS tutari_bilinen_kayit
FROM satislar;

AS ile verilen adlar yalnızca sonuç sütunlarının görünür adlarıdır. Bu SELECT sorgusu verileri değiştirmez; ayrıca kaydetme işlemi gerektirmez.

Örneğin tabloda tutarları 100, 200 ve NULL olan üç kayıt varsa toplam 300, ortalama 150, kayıt sayısı 3 ve tutarı bilinen kayıt sayısı 2 olur. Ortalama, 300'ün tüm kayıt sayısına değil, değeri bilinen iki kayda bölünmesiyle bulunur.

NULL ve boş sonuçları yorumlama​


COUNT(*) tüm satırları sayarken COUNT(tutar) yalnızca tutarı NULL olmayan satırları sayar. İki sayı farklıysa aradaki fark, tutarı girilmemiş kayıtların sayısını gösterir. Sıfır ise NULL değildir; toplam ve ortalama hesabına katılır.

Sorguda grup kullanılmadığında hiç satır eşleşmezse kayıt sayısı 0, toplam ve ortalama ise NULL olur. Kayıt sayısı sıfırdan büyük ama COUNT(tutar) sıfırsa satırlar vardır; ancak hiçbirinin tutarı bilinmiyordur. Bu durum, gerçek toplamın veya ortalamanın sıfır olduğunu kanıtlamaz. Gerekirse ilgili kayıtların tutarlarını inceleyip eksik verileri tamamlayın.

NULL toplamı raporda sıfır göstermek istiyorsanız COALESCE(SUM(tutar), 0) kullanabilirsiniz. Bu yalnızca gösterilen sonucu değiştirir; eksik tutarların gerçekten sıfır olduğu anlamına gelmez.

Belirli kayıtları veya grupları hesaplama​


Hesaplamayı belirli satırlarla sınırlandırmak için FROM satırından sonra WHERE koşulu ekleyin. Örneğin WHERE durum = 'tamamlandi', yalnızca durumu bu değere eşit satışları hesaba katar. Sütun adını ve değeri kendi verilerinize göre değiştirin. Sonuç beklenenden azsa koşuldaki değerin tabloda nasıl saklandığını ve doğru veritabanına bağlanıp bağlanmadığınızı kontrol edin.

Her kategori için ayrı sonuç almak isterseniz, kategoriyi seçip GROUP BY ile gruplandırın:

SQL:
SELECT
    kategori,
    SUM(tutar) AS toplam_tutar,
    AVG(tutar) AS ortalama_tutar,
    COUNT(*) AS kayit_sayisi
FROM satislar
GROUP BY kategori;

Bu sorgu her kategori için bir satır üretir. Filtre de gerekiyorsa WHERE ifadesini GROUP BY öncesine ekleyin. Filtreye uyan kayıt yoksa bu gruplu sorgu sonuç satırı üretmez.

Ortalama neden ondalık görünmüyor?​


Sonuç türü veritabanına ve sütunun veri türüne bağlıdır. Örneğin SQL Server'da tam sayı türündeki bir sütuna uygulanan AVG() tam sayı türünde sonuç verebilir. Ondalık ortalama gerektiğinde dönüşümü hesaplamadan önce yapabilirsiniz:

SQL:
SELECT AVG(CAST(tutar AS DECIMAL(18, 2))) AS ortalama_tutar
FROM satislar;

DECIMAL(18, 2) burada örnek bir türdür; toplam basamak sayısını ve ondalık basamak sayısını verinizin aralığına ve gereken hassasiyete göre seçin.
 

Sende şimdi bize katılmak ister misin?

Kayıt ol

Bize katılım kolay ve ücretsizdir!

Foruma git ?

Bu konuyu görüntüleyen kullanıcılar

Bu konuyu şu anda görüntüleyen üye bulunmuyor.
Robotlar:
  • Anthropic