PostgreSQL

Pivot Tablefuncilla / ilman

Pivot Tablefuncilla / ilman

Pivot-taulukko on tehokas työkalu tietojen arvioimiseksi, kokoamiseksi ja tarkistamiseksi, jotta mallit ja trendit löytyvät entistä helpommin. Pivot-taulukoita voidaan käyttää tietojen kokoamiseen, lajitteluun, järjestämiseen, uudelleen järjestämiseen, ryhmittelemiseen, kokonaismäärään tai keskiarvoon datayhteyksien ja riippuvuuksien ymmärtämiseksi. Pivot-taulukon käyttäminen esimerkkinä on helpoin tapa osoittaa, miten tämä menetelmä toimii. PostgreSQL 8.3 julkaistiin muutama vuosi sitten, ja uusi versio nimeltätablefunc' lisättiin. Taulukko on komponentti, joka sisältää useita menetelmiä, jotka tuottavat taulukoita (eli useita rivejä). Tämä muutos sisältää erittäin hienon valikoiman ominaisuuksia. Ristikkotaulukko-menetelmä, jota käytetään kääntötaulukoiden luomiseen, on niiden joukossa. Ristikkotaulukko -menetelmässä on teksti-argumentti: SQL-komento, joka palauttaa raakatiedot ensimmäisessä asettelussa ja palauttaa taulukon seuraavassa asettelussa.

Esimerkki pivot-taulukosta ilman TableFunc:

Jotta voit aloittaa PostgreSQL-kääntämisen 'tablefunc' -moduulin kanssa, sinun on yritettävä tehdä pivot-taulukko ilman sitä. Joten avataan PostgreSQL-komentorivin kuori ja annetaan tarvittavan palvelimen, tietokannan, portin numeron, käyttäjänimen ja salasanan parametriarvot. Jätä nämä parametrit tyhjiksi, jos haluat käyttää valittuja oletusparametreja.

Luomme uuden taulukon nimeltä "Test" tietokantaan "test", jossa on joitain kenttiä, kuten alla näytetään.

>> LUO TAULUKKOTesti (Id int, nimi varchar (20), sal int, job varchar (20));

Taulukon luomisen jälkeen on aika lisätä joitain arvoja taulukkoon alla olevan kyselyn mukaisesti.

>> INSERT INTO Test (tunnus, nimi, sal, työ) ARVOT (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', 50000, 'lääkäri'), (12, 'Raza', 40000, 'upseeri'), (11, 'Raza', 60000, 'lääkäri'), (12, 'Raza', 67000, 'upseeri'), ( 13, 'Saeed', 85000, 'Writer'), (13, 'Saeed', 69000, 'Officer'), (13, 'Saeed', 90000, 'Doctor');

Voit nähdä, että asiaankuuluvat tiedot on lisätty onnistuneesti. Näet, että tässä taulukossa on enemmän kuin yksi samoista arvoista tunnukselle, nimellä ja työlle.

>> SELECT * FROM-tulo;

Luodaan pivot-taulukko, joka tiivistää taulukon "Test" tietueen alla olevan kyselyn avulla. Komento yhdistää samat Id- ja Nimi-sarakkeiden arvot yhdelle riville samalla, kun samojen tietojen Palkka-sarakearvojen summa lasketaan Id: n ja nimen mukaan. Se kertoo myös, kuinka monta kertaa yksi arvo on tapahtunut tietyssä arvojoukossa.

>> SELECT ID, nimi, summa (sal) sal, summa ((työ = 'lääkäri') :: int) lääkäri, summa ((työ = 'kirjoittaja') :: int) kirjoittaja, summa ((työ = 'virkailija) ') :: int) "Officer" FROM Test GROUP BY ID, nimi;

Esimerkki pivot-taulukosta, jossa on TableFunc:

Aloitetaan selittämällä pääkohdamme realistisesta näkökulmasta ja sitten kuvataan pivot-taulukon luominen haluamissamme vaiheissa. Joten ensinnäkin sinun on lisättävä kolme taulukkoa työskentelemään pivotilla. Ensimmäinen taulukko, jonka aiomme luoda, on '' Meikki '', joka tallentaa tietoja meikkien välttämättömyydestä. Luo tämä taulukko kokeilemalla alla olevaa kyselyä komentorivin kuoressa.

>> LUO TAULUKKO, JOS EI OLE MEIKKI (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

Kun on luotu taulukko '' Meikki '', lisätään siihen tietueita. Suoritamme alla luetellun kyselyn kuoressa lisätäksesi 10 tietuetta tähän taulukkoon.

Meidän on luotava toinen taulukko nimeltä käyttäjät, joka aikoo pitää kirjaa kyseisiä tuotteita käyttävistä käyttäjistä. Luo tämä taulukko suorittamalla alla ilmoitettu kysely kuoressa.

>> LUO TAULUKKO, JOS EI OLE KÄYTTÄJÄT (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Olemme lisänneet 20 tietuetta taulukolle 'käyttäjät' alla olevan kuvan mukaisesti.

Meillä on toinen taulukko, 'makeup_user', joka pitää sekä '' Meikki '' - ja '' Käyttäjät '' -taulukon keskinäiset tietueet. Sillä on toinen kenttä, hinta, joka säästää tuotteen hintaa. Taulukko on luotu käyttämällä alla olevaa kyselyä.

>> LUO TAULUKKO, JOS EI OLE OLEMASSA makeup_user (ID int PRIMARY KEY, Mid int EI NULL REFERENCES Makeup (make_Id), Uid int NOT NULL REFERENCES users (user_id), price decimal (18,2));

Olemme lisänneet tähän taulukkoon yhteensä 56 tietuetta kuvan osoittamalla tavalla.

Luodaan edelleen näkymä, jotta sitä voidaan käyttää pivot-taulukon luomiseen. Tämä näkymä käyttää INNER Join -sovellusta kaikkien kolmen taulukon ensisijaisen avaimen sarakearvojen sovittamiseen ja noutaa tuotteen 'nimi', 'tuotteen_nimi' ja 'hinta' taulukosta 'asiakkaat'

>> LUO NÄKYMÄ v_makeup_users AS SELECT c.u_name, s.p_name, pc.hinta käyttäjiltä c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Meikki p ON pc.Puolivälissä = s.make_Id;

Tämän käyttämiseksi sinun on ensin asennettava tablefunc-paketti käyttämääsi tietokantaan. Tämä paketti on sisäänrakennettu PostgreSQL 9.1 ja myöhemmin vapautettu suorittamalla alla mainittu komento. Tablefunc-paketti on otettu käyttöön nyt.

>> LUO LAAJENNUS, JOS EI OLE TAULUKKO;

Laajennuksen luomisen jälkeen on aika käyttää Crosstab () -toimintoa pivot-taulukon luomiseen. Joten käytämme seuraavaa kyselyä komentorivin kuoressa tekemään niin. Tämä kysely hakee ensin tietuetta äskettäin luodusta "Näytä" -kohdasta. Nämä tietueet järjestetään ja ryhmitellään sarakkeiden 'u_name' ja 'p_name' nousevassa järjestyksessä. Olemme listanneet heidän meikkinimensä jokaiselle asiakkaalle, jonka he ovat ostaneet, ja taulukossa ostettujen tuotteiden kokonaiskustannukset. Olemme käyttäneet sarakkeessa 'p_name' UNION ALL -operaattoria yhteenlaskemaan kaikki yhden asiakkaan erikseen ostamat tuotteet. Tämä laskee kaikki käyttäjän ostamien tuotteiden kustannukset yhteen arvoon.

Pivot-taulukko on ollut valmis ja näytetty kuvassa. Voit selvästi nähdä, että jotkut saraketilat ovat tyhjät jokaisen p_name-nimen alla, koska ne eivät ole ostaneet kyseistä tuotetta.

Päätelmä:

Olemme nyt oppineet loistavasti luomaan pivot-taulukon taulukoiden tulosten yhteenvetoon Tablefunc-paketin avulla ja ilman sitä.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...