PostgreSQL Çapraz Tablo Modülüyle Çalışmak
Verilerinizin nasıl temsil edilmesini istediğinizi belirtebileceğiniz bir odaya sahip olmak kullanışlıdır. PostgreSQL'de, varsayılan yol verileri tablo biçiminde tutmak olsa da çapraz tablo modülü size başka bir seçenek sunar. Daha iyi bir sunum için PostgreSQL tablosundaki 'seçim' sütunlarını kullanarak pivot tabloları oluşturabilirsiniz.
Bu şaşırtıcı özellik PostgreSQL sürüm 8.3'ün bir uzantısı olarak geliyor. 'Tablefunc' uzantısı çapraz tablo işlevini sunarak pivot tabloların sonuç kümeniz olarak kullanılmasını mümkün kılar. Bir örnek verelim.
Öncelikle aşağıdaki komutu kullanarak üç sütunlu “sonuçlar” tablosunu oluşturuyoruz:
Oluşturulan tablo boş. Bu nedenle devam edin ve değerleri ona eklemek için INSERT sorgusunu kullanın. Bu durumda, aşağıda gösterildiği gibi birkaç giriş ekliyoruz:
Eğer “select” deyimini çalıştırırsak aşağıdaki sonuçları elde ederiz. Kayıtları almanın bu varsayılan yönteminin, kayıtları nasıl tablo biçiminde sunduğuna dikkat edin. Sütunlar başlık olarak kullanılır ve ilgili değerleri satırlarda görünür:
Önceki yaklaşım çoğu durumda işe yarasa da aynı kayıtları almak için başka bir seçenek daha vardır. Bu durumda bir pivot tablo oluşturmak istiyoruz. Bu nedenle PostgreSQL sürüm 8.3+ ile birlikte gelen “tablefunc” uzantısını kullanıyoruz.
O halde sorguda çağırdığımızda onu etkinleştirecek bir “tablefunc” uzantısı oluşturalım. Aşağıdaki komutu yürütün:
Önceki resimdekine benzer bir çıktı aldığınızda uzantının başarıyla etkinleştirildiğini bileceksiniz.
Çapraz tablo fonksiyonumuz için ilk sütunu fakülte olacak şekilde yapalım. Aşağıda tablomuzdaki çeşitli fakülteler bulunmaktadır. Fakülte sütununun yanında tablomuzun kategori sütununda farklı değerleri temsil eden başka sütunlarımız da bulunmaktadır. Son olarak, her kategori için farklı kategorilere ulaşan öğrenci sayısını görüyoruz.
Böyle bir pivot tablo elde etmek için aşağıdaki sözdizimini kullanın:
SEÇME * CROSSTAB'DAN ( ‘Sütun1’i SEÇİN , sütun2 , sütun3 FROM tablo_adı ORDER BY kriterleria' )AS new_name ( sütun1 veri_türü , sütun2 veri_türü , sütun_n veri_türü ) ;
Oluşturduğumuz örnek tabloyu kullanarak komutumuz aşağıdaki gibi görünür:
Sonuçları görmeden önce çapraz tablo modülü komutunun nasıl çalıştığına dair bir analiz yapalım. İlk olarak SELECT ifadesi üç sütun döndürür. İlk sütun, satır tanımlayıcısı olarak kabul edilir. Bizim durumumuzda bu “fakülte” sütunudur. “Kategori” sütunu olan ikinci sütun, pivot tablonun kategorilerini temsil eder. Son olarak üçüncü sütunda kategorilere ilişkin değerler yer almaktadır. Bizim durumumuzda her kategorideki öğrenci sayısıdır.
Bu anlayışla “Enter” tuşuna bastığımızda pivot tabloyu aşağıdaki gibi elde ederiz:
Döndürülen pivot tabloya dayanarak, SELECT deyimindeki ilk sütunun ilk dizi ve ikinci sütunun boyuttaki ikinci dizi olduğu 2 boyutlu bir dizi gibi çalıştığını görebiliriz. Üçüncü sütun, ikinci dizi öğelerinin değerlerini içerir.
Çözüm
PostgreSQL çapraz tablosu, tablo değerlerini pivot tablo olarak temsil etmek için iyidir. Çapraz tablo modülünü kullanmak için SELECT ifadenizde üç sütun döndürmeniz gerekir ve bu gönderide bunun nasıl kullanılacağına dair pratik bir örnek paylaşılmıştır. Ayrıca 2 boyutlu diziyle aynı mantığı kullanan pivot tablo oluşturmada crosstab modülünün nasıl çalıştığını anlattık.