Kuidas kasutada PostrgreSQL Crosstab moodulit

Kuidas Kasutada Postrgresql Crosstab Moodulit



Kui käivitate SELECT-lause, et tuua kirjed PostgreSQL-i tabelist, tagastatakse andmed tabelina. Tabelivorm ei pruugi alati andmete lugemiseks parim olla, eriti kui soovite väärtusi võrrelda. Parem lähenemine on kirjete tagastamine risttabelina. Selleks pakub PostgreSQL funktsiooni tablefunc, mis võimaldab kasutajatel kasutada risttabeli funktsiooni sihtandmete esitamiseks pöördetabelina. Selles postituses kirjeldatakse üksikasjalikumalt, kuidas kasutada PostgreSQL-i risttabeli funktsiooni. Loe edasi!

Töötamine PostgreSQL Crosstab Module'iga

Kasulik on ruumi olemasolu, kus saate määrata, kuidas soovite oma andmeid esitada. Kuigi PostgreSQL-i puhul on vaikimisi andmete esitamine tabelina, annab risttabeldusmoodul teile veel ühe võimaluse. Pivot-tabeleid saate luua PostgreSQL-i tabeli 'select' veergude abil, et esitlemine oleks parem.

Hämmastav funktsioon on PostgreSQL-i versiooni 8.3 laiendus. Laiendus 'tablefunc' pakub risttabeli funktsiooni, mis võimaldab tulemuste komplektina kasutada pivot-tabeleid. Toome näite.







Esiteks loome järgmise käsu abil kolme veeruga tabeli 'tulemused'.





Loodud tabel on tühi. Seega minge edasi ja kasutage sellele väärtuste lisamiseks päringut INSERT. Sel juhul sisestame mõned kirjed, nagu on näidatud järgmises:





Kui käivitame lause „select”, saame järgmised tulemused. Pange tähele, kuidas see vaikeviis kirjete toomiseks esitab need tabelina. Veerge kasutatakse päistena ja nende vastavad väärtused kuvatakse ridadel:



Kuigi eelmine lähenemisviis töötab enamikul juhtudel, on samade kirjete toomiseks veel üks võimalus. Sel juhul tahame luua liigendtabeli. Seetõttu kasutame laiendust 'tablefunc', mis on kaasas PostgreSQL-i versiooniga 8.3+.


Loome siis laienduse 'tablefunc', mis lubab selle päringus kutsudes. Käivitage järgmine käsk:

LOO LAIEND, KUI EI OLEMAS tablefunc ;

Saate teada, et laiendus on edukalt lubatud, kui saate sellise väljundi nagu eelmisel pildil.

Teeme oma risttabeli funktsiooni jaoks nii, et esimene veerg on õppejõud. Selle all on erinevad teaduskonnad, mis meie tabelis on. Teaduskonna veeru kõrval on teisi veerge, mis esindavad meie tabeli kategooriaveeru erinevaid väärtusi. Lõpuks on meil iga kategooria kohta õpilaste arv, kes saavutasid erinevad kategooriad.

Sellise liigendtabeli saamiseks kasutage järgmist süntaksit:

VALI * CROSSTABIST ( „VALI veerg1 , veerg2 , veerg3 FROM tabeli_nimi ORDER BY kriteeriumid' )

AS uus_nimi ( veerg1 andmetüüp , veerg2 andmetüüp , veeru_n andmetüüp ) ;

Kasutades meie loodud näidistabelit, näeb meie käsk välja järgmine:

Enne tulemuste nägemist analüüsime risttabelimooduli käsu toimimist. Esiteks tagastab SELECT-lause kolm veergu. Esimest veergu käsitletakse rea identifikaatorina. Meie puhul on see veerg 'teaduskond'. Teine veerg, mis on veerg 'kategooria', tähistab liigendtabeli kategooriaid. Lõpuks sisaldab kolmas veerg kategooriate väärtusi. Meie puhul on see õpilaste arv igas kategoorias.

Sellest arusaamisel, kui vajutame sisestusklahvi, saame pivot-tabeli järgmiselt:

Tagastatud pivot-tabeli põhjal näeme, et see töötab nagu 2-D massiiv, kus SELECT-lause esimene veerg on esimene massiiv ja teine ​​veerg on mõõtme teine ​​massiiv. Kolmas veerg sisaldab teise massiivi elementide väärtusi.

Järeldus

PostgreSQL-i risttabel sobib hästi tabeliväärtuste esitamiseks liigendtabelina. Risttabeli mooduli kasutamiseks peate oma SELECT-lauses tagastama kolm veergu ja see postitus on jaganud selle kasutamise praktilist näidet. Lisaks selgitasime, kuidas risttabelimoodul toimib pivot-tabeli loomisel, mis kasutab sama loogikat kui 2-D massiiv.