PostgreSQL

Drej med / uden Tablefunc

Drej med / uden Tablefunc

En pivottabel er et kraftfuldt værktøj til estimering, kompilering og gennemgang af data for at finde mønstre og tendenser endnu lettere. Pivottabeller kan bruges til at samle, sortere, arrangere, omarrangere, gruppere, samlede eller gennemsnitlige data i et datasæt for virkelig at forstå datatilknytninger og afhængigheder. Brug af en drejetabel som en illustration er den nemmeste måde at demonstrere, hvordan denne metode fungerer. PostgreSQL 8.3 blev lanceret for et par år tilbage, og en ny version med navnet 'tablefuncblev tilføjet. Tablefunc er en komponent, der indeholder flere metoder, der giver tabeller (dvs. flere rækker). Denne ændring kommer med et meget sejt udvalg af funktioner. Crosstab-metoden, som vil blive brugt til at oprette pivottabeller, er blandt dem. Crosstab-metoden tager et tekstargument: en SQL-kommando, der returnerer rådata i det første layout og returnerer en tabel i det efterfølgende layout.

Eksempel på drejetabel uden tabelFunc:

For at begynde at arbejde på PostgreSQL-drejning med 'tablefunc'-modulet, skal du prøve at lave en pivottabel uden den. Så lad os åbne PostgreSQL kommandolinjeskal og give parameterværdierne til den krævede server, database, portnummer, brugernavn og adgangskode. Lad disse parametre være tomme, hvis du vil bruge de valgte standardparametre.

Vi opretter en ny tabel med navnet 'Test' i databasens 'test' med nogle felter i den, som vist nedenfor.

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

Efter oprettelse af en tabel er det tid til at indsætte nogle værdier i tabellen som vist i nedenstående forespørgsel.

>> 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 data er blevet indsat. Du kan se, at denne tabel har mere end 1 af de samme værdier for id, navn og job.

>> VÆLG * FRA input;

Lad os oprette en pivottabel, som opsummerer registreringen af ​​tabellen 'Test' ved hjælp af nedenstående forespørgsel. Kommandoen fletter de samme værdier i kolonnen 'Id' og 'navn' i en række, mens summen af ​​kolonneværdierne 'løn' tages for de samme data i henhold til 'Id' og 'navn'. Det fortæller også, hvor mange gange en værdi er sket i det bestemte sæt værdier.

>> VÆLG Id, navn, sum (sal) sal, sum ((job = 'Doctor') :: int) Doctor, sum ((job = 'Writer') :: int) Writer, sum ((job = 'Officer) ') :: int) "Officer" FRA TestGRUPPE VED Id, navn;

Eksempel på drejetabel med TableFunc:

Vi starter med at forklare vores hovedpunkt fra et realistisk synspunkt, og derefter beskriver vi oprettelsen af ​​drejetabellen i trin, vi kan lide. Så først og fremmest skal du tilføje tre tabeller for at arbejde på en pivot. Den første tabel, vi skal skabe, er 'Makeup', som gemmer information om makeup-essentials. Prøv nedenstående forespørgsel i kommandolinjeskallen for at oprette denne tabel.

>> Opret TABEL, HVIS IKKE FINDER Makeup (make_Id int PRIMÆR NØGLE, p_navn VARCHAR (100) IKKE NULL);

Efter oprettelsen af ​​tabellen 'Makeup', lad os tilføje nogle poster til den. Vi udfører nedenstående forespørgsel i skallen for at tilføje 10 poster til denne tabel.

Vi er nødt til at oprette en anden tabel, der hedder 'brugere', som holder optegnelser over brugerne, der bruger disse produkter. Udfør nedenstående forespørgsel i skallen for at oprette denne tabel.

>> Opret TABEL, HVIS IKKE EXISTERER brugere (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Vi har indsat de 20 poster for tabellen 'brugere' som vist på billedet nedenfor.

Vi har en anden tabel, 'makeup_user', som holder de gensidige optegnelser for både 'Makeup' og 'brugere'. Det har et andet felt, 'pris', der sparer prisen på produktet. Tabellen er genereret ved hjælp af nedenstående forespørgsel.

>> OPRET TABEL, HVIS IKKE FINDER makeup_user (ID int PRIMÆR NØGLE, Mid int IKKE NULLE REFERENCER Makeup (make_Id), Uid int IKKE NULL REFERENCER brugere (user_id), pris decimal (18,2));

Vi har indsat i alt 56 poster i denne tabel som vist på billedet.

Lad os oprette en yderligere visning for at bruge den til generering af en pivottabel. Denne visning bruger INNER Join for at matche de primære nøglekolonneværdier for alle de tre tabeller og hente 'navn', 'produktnavn' og 'pris' for et produkt fra en tabel 'kunder'

>> OPRET VISNING v_makeup_users AS VÆLG c.u_navn, s.p_name, pc.pris FRA brugere c INNRE JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Makeup p ON pc.Mid = s.make_Id;

For at bruge dette skal du først installere tablefunc-pakken til den database, du vil bruge. Denne pakke er indbygget PostgreSQL 9.1 og senere frigivet ved at køre nedenstående kommando. Tablefunc-pakken er aktiveret for dig nu.

>> OPRET UDVIDELSE, HVIS IKKE FINDER tablefunc;

Efter oprettelse af udvidelsen er det tid til at bruge funktionen Crosstab () til at oprette en pivottabel. Så vi bruger følgende forespørgsel i kommandolinjeskallen til at gøre det. Denne forespørgsel henter først posten fra det nyoprettede 'Vis'. Disse poster ordnes og grupperes efter stigende rækkefølge af kolonnerne 'u_name' og 'p_name'. Vi har angivet deres makeup-navn for hver kunde, som de har købt, og de samlede omkostninger for produkter købt i tabellen. Vi har anvendt UNION ALL-operatøren i kolonnen 'p_name' til at opsummere alle de produkter, der er købt af en kunde separat. Dette opsummerer alle omkostninger ved produkter købt af en bruger i en værdi.

Vores pivottabel har været klar og vist på billedet. Du kan tydeligt se, at nogle kolonneområder er tomme under hvert p_navn, fordi de ikke har købt det bestemte produkt.

Konklusion:

Vi har nu glimrende lært, hvordan man opretter en pivottabel for at opsummere tabellenes resultater med og uden brug af Tablefunc-pakken.

Installer det nyeste OpenRA-strategispil på Ubuntu Linux
OpenRA er en Libre / Free Real Time Strategy-spilmotor, der genskaber de tidlige Westwood-spil som det klassiske Command & Conquer: Red Alert. Distrib...
Installer nyeste Dolphin Emulator til Gamecube & Wii på Linux
Dolphin Emulator giver dig mulighed for at spille dine valgte Gamecube & Wii-spil på Linux Personal Computers (PC). Som en frit tilgængelig og open s...
Sådan bruges GameConqueror Cheat Engine i Linux
Artiklen dækker en vejledning om brug af GameConqueror-snydemotoren i Linux. Mange brugere, der spiller spil på Windows, bruger ofte "Cheat Engine" -a...