PostrgreSQL Çapraz Tablo Modülü Nasıl Kullanılır

Postrgresql Capraz Tablo Modulu Nasil Kullanilir



Kayıtları PostgreSQL tablosundan almak için SELECT ifadesini çalıştırdığınızda veriler tablo biçiminde döndürülür. Tablolu form, özellikle değerleri karşılaştırmak istediğinizde, verileri okumak için her zaman en iyi seçenek olmayabilir. Daha iyi bir yaklaşım, kayıtları çapraz tablo olarak döndürmektir. Bunun için PostgreSQL, kullanıcıların hedef verileri bir pivot tablo olarak temsil etmek için çapraz tablo işlevini kullanmalarına olanak tanıyan tablefunc'u sunar. Bu gönderide PostgreSQL çapraz tablo işlevinin nasıl kullanılacağı hakkında daha fazla bilgi verilmektedir. Okumaya devam etmek!

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:

MEVCUT DEĞİLSE UZATMA OLUŞTUR tablefunc ;

Ö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.