Slik bruker du PostrgreSQL-krysstabellmodulen

Slik Bruker Du Postrgresql Krysstabellmodulen



Når du kjører en SELECT-setning for å hente postene fra en PostgreSQL-tabell, returneres dataene i tabellform. Tabellformen er kanskje ikke alltid den beste for å lese dataene, spesielt når du vil sammenligne verdiene. En bedre tilnærming er å returnere postene som en krysstabell. For det tilbyr PostgreSQL tablefunc for å la brukerne bruke krysstabellfunksjonen for å representere måldataene som en pivottabell. Dette innlegget utdyper mer om hvordan du bruker PostgreSQL krysstabellfunksjonen. Les videre!

Arbeide med PostgreSQL Crosstab-modulen

Det er praktisk å ha et rom for å spesifisere hvordan du vil at dataene dine skal representeres. Med PostgreSQL, selv om standardmåten er å ha dataene i tabellform, gir krysstabellmodulen deg et annet alternativ. Du kan lage pivottabellene ved å bruke 'velg'-kolonnene fra en PostgreSQL-tabell for en bedre presentasjon.

Den fantastiske funksjonen kommer som en utvidelse for PostgreSQL versjon 8.3. «Tablefunc»-utvidelsen tilbyr krysstabellfunksjonen, som gjør det mulig å ha pivottabellene som resultatsett. La oss gi et eksempel.







Først lager vi 'resultat'-tabellen med tre kolonner ved å bruke følgende kommando:





Den opprettede tabellen er tom. Gå derfor videre og bruk INSERT-spørringen for å legge til verdiene til den. For dette tilfellet setter vi inn noen få oppføringer som vist i følgende:





Hvis vi kjører 'select'-setningen, får vi følgende resultater. Legg merke til hvordan denne standardmåten for å hente postene presenterer dem i tabellform. Kolonnene brukes som overskrifter og deres respektive verdier vises i radene:



Selv om den forrige tilnærmingen fungerer for de fleste tilfeller, er det et annet alternativ for å hente de samme postene. For dette tilfellet ønsker vi å lage en pivottabell. Derfor bruker vi «tablefunc»-utvidelsen som følger med PostgreSQL versjon 8.3+.


Så la oss lage en 'tablefunc' -utvidelse for å aktivere den når vi kaller den i spørringen. Utfør følgende kommando:

LAG UTVIDELSE HVIS IKKE FINNES tablefunc ;

Du vil vite at utvidelsen har blitt aktivert når du får en utgang som den vi har i forrige bilde.

For krysstabellfunksjonen vår, la oss gjøre det slik at den første kolonnen er fakultetet. Nedenfor er de ulike fakultetene vi har i tabellen vår. Ved siden av fakultetskolonnen har vi andre kolonner som representerer de forskjellige verdiene i kategorikolonnen i tabellen vår. Til slutt, for hver kategori, har vi antall studenter som oppnådde de forskjellige kategoriene.

For å oppnå en slik pivottabell, bruk følgende syntaks:

PLUKKE UT * FRA CROSSTAB ( 'VELG kolonne1 , kolonne 2 , kolonne 3 FRA tabellnavn ORDER BY criteriaa' )

AS nytt_navn ( kolonne1 datatype , kolonne 2 datatype , kolonne_n datatype ) ;

Ved å bruke eksempeltabellen som vi opprettet, ser kommandoen vår ut som følger:

Før vi ser resultatene, la oss få en oversikt over hvordan krysstabellmodulkommandoen fungerer. Først returnerer SELECT-setningen tre kolonner. Den første kolonnen behandles som radidentifikatoren. I vårt tilfelle er det «fakultetet»-kolonnen. Den andre kolonnen, som er 'kategori'-kolonnen, representerer kategoriene for pivottabellen. Til slutt inneholder den tredje kolonnen verdiene for kategoriene. I vårt tilfelle er det antall elever i hver kategori.

Når vi har den forståelsen, når vi trykker på 'Enter'-tasten, får vi pivottabellen som følger:

Basert på den returnerte pivottabellen kan vi se at den fungerer som en 2D-matrise der den første kolonnen i SELECT-setningen er den første matrisen og den andre kolonnen er den andre matrisen i dimensjonen. Den tredje kolonnen inneholder verdiene for de andre matriseelementene.

Konklusjon

PostgreSQL krysstabellen er god for å representere tabellverdiene som en pivottabell. Du må returnere tre kolonner i SELECT-setningen din for å bruke krysstabellmodulen, og dette innlegget har delt et praktisk eksempel på hvordan du bruker den. Dessuten forklarte vi hvordan krysstabellmodulen fungerer for å lage pivottabellen som bruker samme logikk som en 2-D-array.