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:
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.