Takip et

PostgreSQL: Birden Çok Sütuna Ait Ortalamayı Hesaplama

# PostgreSQL’de Birden Çok Sütunun Ortalamasını Hesaplama

PostgreSQL veritabanınızda birden fazla sayısal sütunun ortalamasını hesaplamak mı istiyorsunuz? Örneğin, bir öğrencinin farklı sınavlardaki notlarının ortalamasını veya bir ürünün farklı mağazalardaki satış rakamlarının ortalamasını hesaplamanız gerekebilir. Bu makalede, PostgreSQL’de bu işlemi adım adım nasıl yapacağınızı, farklı senaryoları ve performans optimizasyon tekniklerini ele alacağız. PostgreSQL’in güçlü fonksiyonlarını kullanarak verilerinizden anlamlı sonuçlar elde etmenize yardımcı olacağız.

Öğrenme Yol Haritası

Bu makale, PostgreSQL’de birden çok sütunun ortalamasını hesaplamayı adım adım öğretmek için üç seviyeye ayrılmıştır:

Yeni Başlayan: (Adım adım açıklama, Basit kod örneği)

Orta: (Gerçek hayat örneği, Optimizasyon ipuçları)

İleri Düzey: (Performans analizi, Edge caseler)

PostgreSQL Temelleri: Ortalama Hesaplama

PostgreSQL’de tek bir sütunun ortalamasını hesaplamak oldukça basittir. AVG() fonksiyonunu kullanırız. Örneğin, ogrenciler tablosunda matematik sütununun ortalamasını hesaplamak için şu sorguları kullanabiliriz:

SELECT AVG(matematik) AS matematik_ortalamasi FROM ogrenciler;

Bu sorgu, ogrenciler tablosundaki tüm öğrencilerin matematik notlarının ortalamasını hesaplar ve sonucu matematik_ortalamasi olarak adlandırır.

Birden Çok Sütunun Ortalamasını Hesaplama: Temel Teknikler

Birden fazla sütunun ortalamasını hesaplamak için birkaç yöntem kullanabiliriz. En basit yöntem, her sütun için ayrı bir AVG() fonksiyonu kullanmaktır. Örneğin, ogrenciler tablosunda matematik, fizik ve kimya notlarının ortalamasını hesaplamak için:

SELECT 
    AVG(matematik) AS matematik_ortalamasi,
    AVG(fizik) AS fizik_ortalamasi,
    AVG(kimya) AS kimya_ortalamasi
FROM ogrenciler;

Bu sorgu, her dersin ortalamasını ayrı ayrı hesaplayarak bize üç farklı sonuç verir. Ancak, tüm derslerin genel ortalamasını hesaplamak istiyorsak, daha karmaşık bir yaklaşım kullanmamız gerekir.

Birden Çok Sütunun Genel Ortalamasını Hesaplama: İleri Teknikler

Tüm derslerin genel ortalamasını hesaplamak için, önce her öğrencinin ders notlarının toplamını hesaplamamız, ardından bu toplamların ortalamasını almamız gerekir. Bunun için CASE ifadeleri veya daha gelişmiş SQL teknikleri kullanabiliriz. Öncelikle her öğrencinin toplam notunu hesaplayalım:

SELECT 
    ogrenci_id,
    (matematik + fizik + kimya) AS toplam_not
FROM ogrenciler;

Daha sonra bu toplam notların ortalamasını alabiliriz:

SELECT AVG(toplam_not) AS genel_ortalama FROM (
    SELECT (matematik + fizik + kimya) AS toplam_not FROM ogrenciler
) AS alt_sorgu;

Bu yaklaşım, önce bir alt sorgu kullanarak her öğrencinin toplam notunu hesaplar ve daha sonra bu toplam notların ortalamasını ana sorguda hesaplar. Daha okunaklı bir yöntem, COALESCE fonksiyonunu kullanarak NULL değerlerle başa çıkmaktır. Eğer bazı öğrencilerin bazı derslerde notu yoksa, COALESCE fonksiyonu bu değerleri 0 olarak kabul ederek doğru bir ortalama hesaplamayı sağlar.

SELECT AVG(COALESCE(matematik,0) + COALESCE(fizik,0) + COALESCE(kimya,0)) AS genel_ortalama FROM ogrenciler;

Gerçek Hayattan Örnek: Ürün Satış Ortalamaları

Bir e-ticaret şirketinde çalıştığınızı ve farklı şehirlerdeki satış rakamlarını analiz etmeniz gerektiğini varsayalım. Her şehir için farklı ürünlerin satış rakamları ayrı sütunlarda saklanıyor olsun. Bu durumda, yukarıdaki teknikleri kullanarak her şehrin genel ürün satış ortalamasını hesaplayabiliriz. Örneğin:

SELECT 
    sehir,
    AVG(COALESCE(urun1,0) + COALESCE(urun2,0) + COALESCE(urun3,0)) AS ortalama_satis
FROM satislar
GROUP BY sehir;

Bu sorgu, her şehrin üç ürünün satış rakamlarının ortalamasını hesaplar ve NULL değerleri 0 olarak ele alır.

Performans Optimizasyonu: İpuçları ve Teknikler

Büyük veri kümeleriyle çalışırken, sorgu performansını optimize etmek önemlidir. Aşağıdaki ipuçları performansı artırmanıza yardımcı olabilir:

* İndexler: Sık kullanılan sütunlara index eklemek sorgu süresini önemli ölçüde azaltabilir.
* WHERE klauzu: Gerekli verileri filtrelemek için WHERE klauzu kullanın. Bu, işlenecek veri miktarını azaltarak performansı artırır.
* Alt sorguların optimizasyonu: Alt sorgular performansı etkileyebilir. Mümkünse, alt sorguları JOIN işlemleriyle değiştirmeyi deneyin.
* Analiz: EXPLAIN komutu ile sorgu planını analiz ederek performans darboğazlarını belirleyebilirsiniz.

İleri Düzey Konular: Edge Case’ler ve Karmaşık Senaryolar

Bazı durumlarda, ortalama hesaplama daha karmaşık olabilir. Örneğin, belirli bir koşulu sağlayan satırların ortalamasını hesaplamanız gerekebilir veya farklı ağırlıklarla ortalama hesaplamanız gerekebilir. Bu tür durumlarda, daha gelişmiş SQL fonksiyonları ve teknikleri kullanmanız gerekebilir. CASE ifadeleri, PARTITION BY klauzu ve pencere fonksiyonları bu gibi durumlarda yardımcı olabilir. Ayrıca, veritabanınızın yapısı ve verilerinizin özellikleri de performansı ve doğru sonucu elde etmeyi etkileyebilir.

Sonuç

PostgreSQL’de birden çok sütunun ortalamasını hesaplamak için çeşitli yöntemler mevcuttur. Basit durumlarda, her sütun için ayrı AVG() fonksiyonları kullanabilirsiniz. Daha karmaşık durumlarda, alt sorgular, COALESCE fonksiyonu ve diğer gelişmiş teknikleri kullanmanız gerekebilir. Performans optimizasyonu için indexler, WHERE klauzu ve sorgu planı analizi önemlidir. Bu makalede ele alınan teknikler, PostgreSQL veritabanınızdan en iyi şekilde yararlanmanıza ve verilerinizden anlamlı sonuçlar elde etmenize yardımcı olacaktır. Daha fazla bilgi için [fatihsoysal.com](https://fatihsoysal.com) adresini ziyaret edebilirsiniz.

Sıkça Sorulan Sorular:

1. NULL değerlerle nasıl başa çıkabilirim? COALESCE fonksiyonu NULL değerleri belirlediğiniz bir değerle (örneğin 0) değiştirebilir.
2. Ağırlıklı ortalama nasıl hesaplarım? SUM(sutun * agirlik) / SUM(agirlik) formülünü kullanarak ağırlıklı ortalama hesaplayabilirsiniz.
3. Çok büyük veri kümeleri için performansı nasıl optimize edebilirim? İndexler, WHERE klauzu ve sorgu planı optimizasyonu kullanın.
4. Farklı koşullara göre ortalama nasıl hesaplarım? CASE ifadeleri ve WHERE klauzu kullanarak farklı koşullara göre ortalama hesaplayabilirsiniz.
5. PostgreSQL’in sunduğu diğer ortalama hesaplama fonksiyonları var mı? AVG() fonksiyonunun yanı sıra, pencere fonksiyonları ve istatistiksel fonksiyonlar da ortalama hesaplamada kullanılabilir.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.