Kaip naudoti PostrgreSQL Crosstab modulį

Kaip Naudoti Postrgresql Crosstab Moduli



Kai vykdote SELECT teiginį, kad gautumėte įrašus iš PostgreSQL lentelės, duomenys grąžinami lentelės forma. Lentelės forma ne visada gali būti geriausia duomenims skaityti, ypač kai norite palyginti reikšmes. Geresnis būdas yra grąžinti įrašus kaip kryžminį skirtuką. Tam „PostgreSQL“ siūlo „tablefunc“, kad vartotojai galėtų naudoti kryžminę funkciją, kad tiksliniai duomenys būtų rodomi kaip suvestinė lentelė. Šiame įraše išsamiau paaiškinama, kaip naudoti PostgreSQL kryžminio tabulumo funkciją. Skaityk!

Darbas su PostgreSQL Crosstab moduliu

Patogu turėti patalpą nurodyti, kaip norite pateikti savo duomenis. Naudojant PostgreSQL, nors numatytasis būdas yra pateikti duomenis lentelės pavidalu, kryžminio lentelės modulis suteikia dar vieną parinktį. Suvestines lenteles galite sukurti naudodami PostgreSQL lentelės „select“ stulpelius, kad geriau pateiktumėte.

Nuostabi funkcija yra kaip PostgreSQL 8.3 versijos plėtinys. Plėtinys „tablefunc“ siūlo kryžminės lentelės funkciją, leidžiančią nustatyti suvestinės lenteles kaip rezultatų rinkinį. Pateiksime pavyzdį.







Pirma, mes sukuriame „rezultatų“ lentelę su trimis stulpeliais naudodami šią komandą:





Sukurta lentelė tuščia. Taigi, eikite į priekį ir naudokite INSERT užklausą, kad pridėtumėte reikšmes. Šiuo atveju įterpiame keletą įrašų, kaip parodyta toliau:





Jei vykdysime teiginį „select“, gausime tokius rezultatus. Atkreipkite dėmesį, kaip šis numatytasis įrašų gavimo būdas pateikia juos lentelės pavidalu. Stulpeliai naudojami kaip antraštės, o atitinkamos jų reikšmės rodomos eilutėse:



Nors ankstesnis metodas tinka daugeliu atvejų, yra ir kita galimybė gauti tuos pačius įrašus. Šiuo atveju norime sukurti suvestinę lentelę. Todėl naudojame „tablefunc“ plėtinį, kuris pateikiamas su „PostgreSQL“ 8.3 ir naujesnėmis versijomis.


Taigi, sukurkime „tablefunc“ plėtinį, kad jį įjungtume, kai jį iškviečiame užklausoje. Vykdykite šią komandą:

KURTI PLĖTINĮ, JEI NĖRA tablefunc ;

Jūs žinosite, kad plėtinys buvo sėkmingai įjungtas, kai gausite tokią išvestį, kokią turime ankstesniame paveikslėlyje.

Mūsų kryžminės lentelės funkcijai padarykite taip, kad pirmasis stulpelis būtų fakultetas. Žemiau pateikiami įvairūs mūsų lentelėje pateikti fakultetai. Šalia fakulteto stulpelio yra ir kitų stulpelių, kurie atspindi skirtingas reikšmes mūsų lentelės kategorijų stulpelyje. Galiausiai, kiekvienoje kategorijoje turime studentų, kurie pasiekė skirtingas kategorijas, skaičių.

Norėdami sukurti tokią suvestinę lentelę, naudokite šią sintaksę:

PASIRINKTI * NUO CROSSTAB ( „Pasirinkite stulpelį1 , 2 stulpelis , 3 stulpelis FROM lentelės_pavadinimas ORDER BY kriterijai' )

AS naujas_vardas ( 1 stulpelio duomenų_tipas , 2 stulpelio duomenų_tipas , stulpelio_n duomenų_tipas ) ;

Naudojant pavyzdinę lentelę, kurią sukūrėme, mūsų komanda atrodo taip:

Prieš pamatydami rezultatus, pažiūrėkime, kaip veikia kryžminio tabulumo modulio komanda. Pirma, SELECT sakinys grąžina tris stulpelius. Pirmasis stulpelis laikomas eilutės identifikatoriumi. Mūsų atveju tai yra „fakulteto“ skiltis. Antrasis stulpelis, kuris yra „kategorijos“ stulpelis, rodo suvestinės lentelės kategorijas. Galiausiai, trečiame stulpelyje yra kategorijų reikšmės. Mūsų atveju tai yra kiekvienos kategorijos mokinių skaičius.

Turėdami tai supratimą, paspaudę klavišą „Enter“, gauname suvestinę lentelę taip:

Remiantis grąžinta sukimosi lentele, matome, kad ji veikia kaip 2-D masyvas, kur pirmasis SELECT teiginio stulpelis yra pirmasis masyvas, o antrasis stulpelis yra antrasis matmens masyvas. Trečiame stulpelyje yra antrojo masyvo elementų reikšmės.

Išvada

PostgreSQL kryžminė lentelė yra tinkama lentelės reikšmėms pateikti kaip suvestinę lentelę. Jei norite naudoti kryžminio skirtuko modulį, SELECT sakinyje turite pateikti tris stulpelius, o šiame įraše buvo pateiktas praktinis jo naudojimo pavyzdys. Be to, paaiškinome, kaip veikia kryžminio lentelės modulis kuriant suvestinę lentelę, kuri naudoja tą pačią logiką kaip ir 2D masyvas.