Cum să utilizați modulul PostrgreSQL Crosstab

Cum Sa Utilizati Modulul Postrgresql Crosstab



Când rulați o instrucțiune SELECT pentru a prelua înregistrările dintr-un tabel PostgreSQL, datele sunt returnate într-o formă tabelară. Este posibil ca forma tabelară să nu fie întotdeauna cea mai bună pentru citirea datelor, mai ales atunci când doriți să comparați valorile. O abordare mai bună este să returnați înregistrările ca tabel încrucișat. Pentru aceasta, PostgreSQL oferă tablefunc pentru a permite utilizatorilor să utilizeze funcția crosstab pentru a reprezenta datele țintă ca un tabel pivot. Această postare detaliază mai multe despre cum să utilizați funcția de tablă încrucișată PostgreSQL. Citește mai departe!

Lucrul cu modulul PostgreSQL Crosstab

Este util să aveți o cameră pentru a specifica modul în care doriți să fie reprezentate datele dvs. Cu PostgreSQL, deși modalitatea implicită este de a avea datele într-o formă tabelară, modulul tabel încrucișat vă oferă o altă opțiune. Puteți crea tabele pivot folosind coloanele „selectați” dintr-un tabel PostgreSQL pentru o prezentare mai bună.

Caracteristica uimitoare vine ca o extensie pentru versiunea PostgreSQL 8.3. Extensia „tablefunc” oferă funcția de tabel încrucișat, făcând posibil să aveți tabelele pivot ca set de rezultate. Să dăm un exemplu.





Mai întâi, creăm tabelul „rezultate” cu trei coloane folosind următoarea comandă:





Tabelul creat este gol. Astfel, mergeți mai departe și utilizați interogarea INSERT pentru a adăuga valorile acesteia. Pentru acest caz, inserăm câteva intrări, așa cum se arată în continuare:





Dacă rulăm instrucțiunea „select”, obținem următoarele rezultate. Observați modul în care acest mod implicit de preluare a înregistrărilor le prezintă într-o formă tabelară. Coloanele sunt folosite ca antete, iar valorile lor respective apar în rândurile:



Deși abordarea anterioară funcționează pentru majoritatea cazurilor, există o altă opțiune pentru a prelua aceleași înregistrări. În acest caz, dorim să creăm un tabel pivot. Prin urmare, folosim extensia „tablefunc” care vine cu PostgreSQL versiunea 8.3+.


Deci, să creăm o extensie „tablefunc” pentru a o activa atunci când o apelăm în interogare. Executați următoarea comandă:

CREATE EXTENSIE DACĂ NU EXISTĂ tablefunc ;

Veți ști că extensia a fost activată cu succes odată ce obțineți o ieșire ca cea pe care o avem în imaginea anterioară.

Pentru funcția noastră de tablă încrucișată, să o facem astfel încât prima coloană să fie facultatea. Mai jos sunt diferitele facultăți pe care le avem în tabelul nostru. Lângă coloana facultății, avem alte coloane care reprezintă diferitele valori din coloana de categorii a tabelului nostru. În sfârșit, pentru fiecare categorie, avem numărul de studenți care au ajuns la diferitele categorii.

Pentru a realiza un astfel de tabel pivot, utilizați următoarea sintaxă:

SELECTAȚI * DE LA CROSSTAB ( „SELECT coloana 1 , coloana2 , coloana3 FROM table_name ORDER BY criteriaa’ )

AS nou_nume ( coloana1 tip_date , coloana2 tip_date , column_n data_type ) ;

Folosind exemplul de tabel pe care l-am creat, comanda noastră arată după cum urmează:

Înainte de a vedea rezultatele, să facem o detaliere a modului în care funcționează comanda modulului crosstab. Mai întâi, instrucțiunea SELECT returnează trei coloane. Prima coloană este tratată ca identificator de rând. În cazul nostru, este rubrica „facultate”. A doua coloană, care este coloana „categorie”, reprezintă categoriile pentru tabelul pivot. În cele din urmă, a treia coloană conține valorile pentru categorii. În cazul nostru, este numărul de studenți din fiecare categorie.

Având această înțelegere, odată ce apăsăm tasta „Enter”, obținem tabelul pivot după cum urmează:

Pe baza tabelului pivot returnat, putem vedea că funcționează ca o matrice 2-D în care prima coloană din instrucțiunea SELECT este prima matrice, iar a doua coloană este a doua matrice din dimensiune. A treia coloană conține valorile pentru al doilea element al matricei.

Concluzie

Tabul încrucișat PostgreSQL este bun pentru a reprezenta valorile tabelului ca tabel pivot. Trebuie să returnați trei coloane în instrucțiunea SELECT pentru a utiliza modulul încrucișat, iar această postare a împărtășit un exemplu practic despre cum să îl utilizați. În plus, am explicat cum funcționează modulul tabel încrucișat în crearea tabelului pivot care utilizează aceeași logică ca o matrice 2-D.