„PostgreSQL“

„Pivot“ su / be „Tablefunc“

„Pivot“ su / be „Tablefunc“

„Pivot“ lentelė yra galingas įrankis, skirtas įvertinti, kaupti ir peržiūrėti duomenis, kad dar lengviau būtų rasti modelius ir tendencijas. „Pivot“ lentelės gali būti naudojamos kaupti, rūšiuoti, tvarkyti, pertvarkyti, grupuoti, bendrus ar vidutinius duomenų rinkinio duomenis, kad būtų galima suprasti duomenų asociacijas ir priklausomybes. Naudojant sukamą lentelę kaip iliustraciją yra lengviausias būdas parodyti, kaip veikia šis metodas. „PostgreSQL 8“.3 buvo paleistas prieš kelerius metus, o nauja versija pavadinta „tablefuncbuvo pridėta. „Tablefunc“ yra komponentas, kuriame yra keli metodai, iš kurių gaunamos lentelės (tai yra kelios eilutės). Ši modifikacija turi labai šaunų funkcijų spektrą. Tarp jų yra kryžminio tabulo metodas, kuris bus naudojamas sukimo lentelėms kurti. Kryžkelio metodas apima tekstinį argumentą: SQL komanda, kuri pateikia pirminius duomenis pirminiame ir vėlesniame išdėstyme - lentelę.

„Pivot“ lentelės pavyzdys be „TableFunc“:

Norėdami pradėti dirbti su „PostgreSQL“ pasukimu su „tablefunc“ moduliu, turite pabandyti sukurti suvestinę lentelę be jos. Taigi atidarykime „PostgreSQL“ komandinės eilutės apvalkalą ir pateikime reikiamo serverio, duomenų bazės, prievado numerio, vartotojo vardo ir slaptažodžio parametrų vertes. Palikite šiuos parametrus tuščius, jei norite naudoti numatytuosius pasirinktus parametrus.

Duomenų bazėje „test“ sukursime naują lentelę pavadinimu „Test“ su keliais joje esančiais laukais, kaip parodyta žemiau.

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

Sukūrus lentelę, laikas į lentelę įterpti keletą reikšmių, kaip parodyta toliau pateiktoje užklausoje.

>> INSERT INTO Test (Id, name, sal, job) VALUES (11, „Aqsa“, 45000, „Writer“), (11, „Aqsa“, 48000, „Pareigūnas“), (11, „Aqsa“, (50000, „Daktaras“), (12, „Raza“, 40000, „Pareigūnas“), (11, „Raza“, 60000, „Gydytojas“), (12, „Raza“, 67000, „Pareigūnas“), ( 13, „Saeed“, 85000, „Rašytojas“), (13, „Saeed“, 69000, „Pareigūnas“), (13, „Saeed“, 90000, „Daktaras“);

Galite pamatyti, kad atitinkami duomenys sėkmingai įterpti. Matote, kad šioje lentelėje yra daugiau nei 1 tos pačios ID, vardo ir darbo reikšmės.

>> SELECT * FROM įvestis;

Sukurkime sukamą lentelę, kurioje bus apibendrintas lentelės „Test“ įrašas naudojant toliau pateiktą užklausą. Komanda sujungia tas pačias stulpelių „Id“ ir „name“ reikšmes vienoje eilėje, o tų pačių duomenų stulpelio „atlyginimas“ reikšmių sumą ima pagal „Id“ ir „name“. Tai taip pat pasako, kiek kartų viena vertė įvyko konkrečiame verčių rinkinyje.

>> SELECT ID, vardas, suma (sal) sal, sum ((darbas = 'Daktaras') :: int) Gydytojas, suma ((darbas = 'Rašytojas') :: int) Rašytojas, suma ((darbas = 'Pareigūnas) ') :: int) „Pareigūnas“ IŠ bandymų grupės pagal ID, vardas;

„Pivot“ lentelės su „TableFunc“ pavyzdys:

Pradėsime paaiškindami savo pagrindinį dalyką realistiniu požiūriu, tada aprašysime suvestinės lentelės kūrimą mums patinkančiais žingsniais. Taigi, pirmiausia turite pridėti tris lenteles, kad galėtumėte dirbti su šarnyru. Pirmoji lentelė, kurią ketiname sukurti, yra „Makiažas“, kurioje bus kaupiama informacija apie pagrindinius makiažo pagrindus. Pabandykite žemiau pateiktą užklausą komandinės eilutės apvalkale, kad sukurtumėte šią lentelę.

>> SUKURTI LENTEL IF, JEI NĖRA Makiažas (make_Id int PRIMARY RAKTAS, p_name VARCHAR (100) NOT NULL);

Sukūrę lentelę „Makeup“, pridėkime prie jos keletą įrašų. Mes vykdysime žemiau pateiktą apvalkalo užklausą, kad prie šios lentelės pridėtume 10 įrašų.

Turime sukurti dar vieną lentelę pavadinimu „vartotojai“, kuri kaups tuos produktus naudojančių vartotojų įrašus. Norėdami sukurti šią lentelę, vykdykite žemiau nurodytą užklausą apvalkale.

>> SUKURTI LENTEL IF, JEI NĖRA vartotojų (user_id int PRIMARY RAKTAS, u_name varchar (100) NOT NULL);

Įterpėme 20 lentelės „vartotojai“ įrašų, kaip parodyta paveikslėlyje žemiau.

Mes turime dar vieną lentelę „makeup_user“, kurioje bus abiejų „Makeup“ ir „users“ lentelių įrašai. Jis turi dar vieną lauką „kaina“, kuris sutaupys produkto kainą. Lentelė sugeneruota naudojant žemiau pateiktą užklausą.

>> SUKURKITE LENTEL IF, JEI NĖRA „makeup_user“ (ID tarp PAGRINDINIO RAKTO, vidurio vid. NE VISOS NUORODOS

Į šią lentelę iš viso įterpėme 56 įrašus, kaip parodyta paveikslėlyje.

Sukurkime tolesnį vaizdą, kad jį panaudotume sukant lentelę. Šiame rodinyje naudojamas INNER Join, kad būtų suderintos visų trijų lentelių pirminio rakto stulpelio vertės ir iš lentelės „klientai“ paimami „pavadinimas“, „produkto_pavadinimas“ ir „kaina“

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, p.p_name, pc.kaina IŠ naudotojų c INNER JOIN makeup_user pc ON c.vartotojo_id = kompiuteris.Uid INNER JOIN Makiažas p ON pc.Vidurys = p.make_Id;

Norėdami tai naudoti, pirmiausia turite įdiegti norimos naudoti duomenų bazės „tablefunc“ paketą. Šis paketas yra įmontuotas „PostgreSQL 9“.1 ir vėliau paleistas vykdant žemiau nurodytą komandą. Dabar „tablefunc“ paketas jums įgalintas.

>> SUKURTI IŠPLĖTIMĄ, JEI NĖRA „tablefunc“;

Sukūrus plėtinį, laikas naudoti „Crosstab“ () funkciją, kad sukurtumėte suvestinę lentelę. Taigi, komandinės eilutės apvalkale naudosime šią užklausą. Ši užklausa pirmą kartą gauna įrašą iš naujai sukurto „View“. Šie įrašai bus išdėstyti ir sugrupuoti didėjančia stulpelių „u_name“ ir „p_name“ tvarka. Lentelėje nurodėme kiekvieno kliento makiažo pavadinimą, kurį jie nusipirko, ir bendrą įsigytų produktų kainą. Stulpelyje „p_name“ pritaikėme operatorių UNION ALL, kad susumuotume visus vieno kliento atskirai įsigytus produktus. Tai sujungs visas vartotojo įsigytų produktų išlaidas į vieną vertę.

Mūsų „Pivot“ lentelė buvo paruošta ir rodoma paveikslėlyje. Jūs aiškiai matote, kad kai kurie stulpelių tarpai yra tušti po kiekvienu p_name, nes jie nepirko to konkretaus produkto.

Išvada:

Dabar mes puikiai išmokome sukurti sukamą lentelę, kurioje būtų apibendrinti lentelių rezultatai naudojant ir nenaudojant „Tablefunc“ paketo.

Pelės kairiuoju pelės mygtuku mygtukas neveikia „Windows 10“
Jei naudojate specialią pelę su savo nešiojamuoju kompiuteriu arba staliniu kompiuteriu, tačiau neveikia pelės kairysis mygtukas dėl tam tikrų priežas...
Žymeklis peršoka arba juda atsitiktinai, kai rašote „Windows 10“
Jei pastebite, kad pelės žymeklis peršoka arba juda pats, automatiškai, atsitiktinai, kai vedate „Windows“ nešiojamąjį kompiuterį ar kompiuterį, kai k...
Kaip pakeisti pelės ir jutiklinių plokščių slinkimo kryptį sistemoje „Windows 10“
Pelė ir Jutiklinė dalisTai ne tik palengvina skaičiavimus, bet ir efektyvesnį bei mažiau laiko reikalaujantį. Mes neįsivaizduojame gyvenimo be šių pri...