PostgreSQL

Pivot med / uten Tablefunc

Pivot med / uten Tablefunc

En pivottabell er et kraftig verktøy for estimering, kompilering og gjennomgang av data for å finne mønstre og trender enda enklere. Pivottabeller kan brukes til å samle, sortere, ordne, omorganisere, gruppere, total eller gjennomsnittlig data i et datasett for å forstå dataassosiasjoner og avhengigheter. Å bruke et pivottabell som illustrasjon er den enkleste måten å demonstrere hvordan denne metoden fungerer. PostgreSQL 8.3 ble lansert for noen år tilbake, og en ny versjon med navnet 'tablefunc' ble lagt til. Tablefunc er en komponent som inneholder flere metoder som gir tabeller (det vil si flere rader). Denne modifikasjonen kommer med et veldig kult utvalg av funksjoner. Crosstab-metoden, som vil bli brukt til å lage pivottabeller, er blant dem. Crosstab-metoden tar et tekstargument: en SQL-kommando som returnerer rådata i første layout og returnerer en tabell i den påfølgende layouten.

Eksempel på pivottabell uten tabellFunc:

For å begynne å jobbe med PostgreSQL-pivotering med 'tablefunc' -modulen, må du prøve å lage en pivottabell uten den. Så la oss åpne PostgreSQL kommandolinjeskall og oppgi parameterverdiene for den nødvendige serveren, databasen, portnummeret, brukernavnet og passordet. La disse parameterne være tomme hvis du vil bruke de valgte parametrene.

Vi lager en ny tabell med navnet 'Test' i databasen 'test' med noen felt i den, som vist nedenfor.

>> CREATE TABLE Test (Id int, name varchar (20), sal int, job varchar (20));

Etter å ha opprettet en tabell, er det på tide å sette inn noen verdier i tabellen, som vist fra spørringen nedenfor.

>> INSERT INTO Test (Id, name, sal, job) VALUES (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', 50000, 'Doctor'), (12, 'Raza', 40000, 'Officer'), (11, 'Raza', 60000, 'Doctor'), (12, 'Raza', 67000, 'Officer'), ( 13, 'Saeed', 85000, 'Writer'), (13, 'Saeed', 69000, 'Officer'), (13, 'Saeed', 90000, 'Doctor');

Du kan se at de relevante dataene er satt inn. Du kan se at denne tabellen har mer enn 1 av de samme verdiene for id, navn og jobb.

>> VELG * FRA inngang;

La oss lage en pivottabell som vil oppsummere posten til tabellen 'Test' ved hjelp av spørringen nedenfor. Kommandoen slår sammen de samme verdiene i kolonnen "Id" og "name" i en rad mens du tar summen av "lønn" -kolonneverdier for de samme dataene i henhold til "Id" og "name". Det forteller også hvor mange ganger en verdi har oppstått i det spesielle verdisettet.

>> VALG Id, navn, sum (sal) sal, sum ((jobb = 'Doctor') :: int) Doctor, sum ((job = 'Writer') :: int) Writer, sum ((job = 'Officer ') :: int) "Offiser" FRA TestGRUPPE PÅ Id, navn;

Eksempel på pivottabell med TableFunc:

Vi begynner med å forklare hovedpoenget vårt fra et realistisk synspunkt, og deretter beskriver vi opprettelsen av pivottabellen i trinn vi liker. Så først og fremst må du legge til tre tabeller for å jobbe med en pivot. Den første tabellen vi skal lage er 'Makeup', som lagrer informasjon om sminkeutstyr. Prøv spørringen nedenfor i kommandolinjeskallet for å lage denne tabellen.

>> OPPRETT TABELL HVIS IKKE eksisterer Makeup (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

Etter opprettelsen av tabellen 'Makeup', la oss legge til noen poster i den. Vi utfører spørringen nedenfor i skallet for å legge til 10 poster i denne tabellen.

Vi må lage en annen tabell med navnet 'brukere' som skal holde oversikten over brukerne som bruker disse produktene. Utfør spørringen nedenfor i skallet for å lage denne tabellen.

>> OPPRETT TABELL HVIS IKKE FUNGER brukere (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Vi har satt inn de 20 postene for tabellen "brukere" som vist på bildet nedenfor.

Vi har en annen tabell, 'makeup_user', som holder de gjensidige postene til både 'Makeup' og 'brukere'. Det har et annet felt, "pris", som vil spare prisen på produktet. Tabellen er generert ved å bruke den angitte spørringen nedenfor.

>> OPPRETT TABELL HVIS IKKE eksisterer makeup_user (ID int PRIMÆR NØKKEL, Mid int IKKE NULLE REFERANSER Makeup (make_Id), Uid int IKKE NULL REFERANSER brukere (user_id), desimalpris (18,2));

Vi har satt inn totalt 56 poster i denne tabellen, som vist på bildet.

La oss lage et syn videre for å bruke det til generering av et pivottabell. Denne visningen bruker INNER Join for å matche de primære nøkkelkolonneverdiene til alle de tre tabellene og hente 'navn', 'produktnavn' og 'kostnad' for et produkt fra en tabell 'kunder'

>> OPPRETT VIEW v_makeup_users AS VELG c.u_name, s.p_name, pc.pris FRA brukere c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p PÅ pc.Mid = s.make_Id;

For å bruke dette, må du først installere tablefunc-pakken for databasen du vil bruke. Denne pakken er innebygd PostgreSQL 9.1 og senere utgitt ved å kjøre kommandoen nedenfor. Tablefunc-pakken er aktivert for deg nå.

>> OPPRETT UTVIDELSE HVIS IKKE FINNER tablefunc;

Etter at du har opprettet utvidelsen, er det på tide å bruke funksjonen Crosstab () til å lage en pivottabell. Så vi bruker følgende spørsmål i kommandolinjeskallet for å gjøre det. Dette spørsmålet henter først posten fra den nylig opprettede 'View'. Disse postene vil bli ordnet og gruppert etter stigende rekkefølge av kolonnene 'u_name' og 'p_name'. Vi har listet opp navnet på sminke for hver kunde som de har kjøpt, og den totale kostnaden for produkter som er kjøpt i tabellen. Vi har brukt UNION ALL-operatøren i kolonnen 'p_name' for å oppsummere alle produktene som er kjøpt av en kunde hver for seg. Dette vil oppsummere alle kostnadene for produkter kjøpt av en bruker til en verdi.

Pivottabellen vår har vært klar og vist på bildet. Du kan tydelig se at noen kolonneplasser er tomme under hvert p_navn fordi de ikke har kjøpt det aktuelle produktet.

Konklusjon:

Vi har nå glimrende lært hvordan vi lager en pivottabell for å oppsummere resultatene til tabellene med og uten bruk av Tablefunc-pakken.

Mus Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
Hvordan endre mus og berøringsplateinnstillinger ved hjelp av Xinput i Linux
De fleste Linux-distribusjoner leveres med "libinput" -biblioteket som standard for å håndtere inngangshendelser på et system. Den kan behandle inngan...
Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...