PostrgreSQL Crosstab -moduulin käyttäminen

Postrgresql Crosstab Moduulin Kayttaminen



Kun suoritat SELECT-käskyn noutaaksesi tietueet PostgreSQL-taulukosta, tiedot palautetaan taulukkomuodossa. Taulukkomuoto ei välttämättä aina ole paras tietojen lukemiseen, varsinkin kun arvoja halutaan vertailla. Parempi tapa on palauttaa tietueet ristitaulukkona. Tätä varten PostgreSQL tarjoaa tablefunc-toiminnon, jonka avulla käyttäjät voivat käyttää crosstab-funktiota kohdetietojen esittämiseen pivot-taulukona. Tässä viestissä käsitellään tarkemmin PostgreSQL-ristitaulukkotoiminnon käyttöä. Jatka lukemista!

Työskentely PostgreSQL Crosstab -moduulin kanssa

On kätevää, että sinulla on tilaa määrittää, kuinka haluat tietosi esitettävän. PostgreSQL:n kanssa, vaikka oletustapa on pitää tiedot taulukkomuodossa, crosstab-moduuli antaa sinulle toisen vaihtoehdon. Voit luoda pivot-taulukoita käyttämällä PostgreSQL-taulukon 'select' -sarakkeita paremman esityksen saamiseksi.

Hämmästyttävä ominaisuus tulee PostgreSQL-version 8.3 laajennuksena. 'Tablefunc'-laajennus tarjoaa crosstab-toiminnon, joka mahdollistaa pivot-taulukoiden käyttämisen tulosjoukona. Otetaan esimerkki.





Ensin luomme 'tulokset' -taulukon, jossa on kolme saraketta seuraavalla komennolla:





Luotu taulukko on tyhjä. Joten mene eteenpäin ja käytä INSERT-kyselyä lisätäksesi arvot siihen. Tässä tapauksessa lisäämme muutaman merkinnän seuraavan kuvan mukaisesti:





Jos suoritamme 'select'-lauseen, saamme seuraavat tulokset. Huomaa, kuinka tämä tietueiden oletushakutapa esittää ne taulukkomuodossa. Sarakkeita käytetään otsikoina ja niiden arvot näkyvät riveillä:



Vaikka edellinen lähestymistapa toimii useimmissa tapauksissa, on olemassa toinen vaihtoehto noutaa samat tietueet. Tätä varten haluamme luoda pivot-taulukon. Siksi käytämme 'tablefunc' -laajennusta, joka tulee PostgreSQL-version 8.3+ mukana.


Joten luodaan 'tablefunc' -laajennus ottaaksesi sen käyttöön, kun kutsumme sitä kyselyssä. Suorita seuraava komento:

LUO LAAJENNUS, JOS EI OLE OLEMASSA tablefunc ;

Tiedät, että laajennus on otettu käyttöön onnistuneesti, kun saat edellisessä kuvassa olevan tulosteen.

Tehdään ristitaulukkofunktiollemme sellainen, että ensimmäinen sarake on tiedekunta. Sen alla on taulukossamme olevat eri tiedekunnat. Tiedekuntasarakkeen vieressä on muita sarakkeita, jotka edustavat taulukkomme kategoriasarakkeen eri arvoja. Lopuksi jokaisessa kategoriassa meillä on eri kategoriat saavuttaneiden opiskelijoiden määrä.

Luo tällainen pivot-taulukko käyttämällä seuraavaa syntaksia:

VALITSE * CROSSTABISTA ( 'VALITSE sarake1 , sarake 2 , sarake3 FROM taulukon_nimi ORDER BY kriteerit' )

AS uusi_nimi ( sarake1 data_type , sarake2 data_type , sarakkeen_n tietotyyppi ) ;

Luomamme esimerkkitaulukon avulla komentomme näyttää seuraavalta:

Ennen kuin näemme tulokset, on erittely siitä, kuinka crosstab-moduulikomento toimii. Ensinnäkin SELECT-käsky palauttaa kolme saraketta. Ensimmäistä saraketta käsitellään rivitunnisteena. Meidän tapauksessamme se on 'tiedekunnan' sarake. Toinen sarake, joka on 'luokka' -sarake, edustaa pivot-taulukon luokat. Lopuksi kolmas sarake sisältää luokkien arvot. Meidän tapauksessamme se on opiskelijoiden lukumäärä kussakin luokassa.

Tämän ymmärtämisen jälkeen, kun painamme 'Enter'-näppäintä, saamme pivot-taulukon seuraavasti:

Palautetun pivot-taulukon perusteella voimme nähdä, että se toimii kuin 2-D-taulukko, jossa SELECT-käskyn ensimmäinen sarake on ensimmäinen taulukko ja toinen sarake dimension toinen taulukko. Kolmas sarake sisältää arvot toisille taulukon elementeille.

Johtopäätös

PostgreSQL-ristitaulukko on hyvä taulukkoarvojen esittämiseen pivot-taulukona. Sinun on palautettava kolme saraketta SELECT-käskyssäsi käyttääksesi crosstab-moduulia, ja tässä viestissä on jaettu käytännön esimerkki sen käytöstä. Lisäksi selitimme, kuinka crosstab-moduuli toimii luotaessa pivot-taulukkoa, joka käyttää samaa logiikkaa kuin 2-D-taulukko.