PostgreSQL

Pagrieziens ar / bez Tablefunc

Pagrieziens ar / bez Tablefunc

Rakurstabula ir spēcīgs rīks datu novērtēšanai, apkopošanai un pārskatīšanai, lai vēl vieglāk atrastu modeļus un tendences. Pivot tabulas var izmantot, lai apkopotu, kārtotu, kārtotu, pārkārtotu, grupētu, kopējos vai vidējos datus datu kopā, lai patiesi izprastu datu saistības un atkarības. Izmantojot rakurstabulu kā ilustrāciju, vienkāršākais veids, kā parādīt šīs metodes darbību. PostgreSQL 8.3 tika palaists dažus gadus atpakaļ, un jauna versija ar nosaukumu 'tablefunc'tika pievienots. Tablefunc ir komponents, kas satur vairākas metodes, kas dod tabulas (tas ir, vairākas rindas). Šai modifikācijai ir ļoti atdzist funkciju klāsts. Starp tiem ir arī šķērsstaba metode, kuru izmantos, lai izveidotu rakurstabulas. Crosstab metodei ir teksta arguments: SQL komanda, kas pirmajā izkārtojumā atgriež neapstrādātus datus, bet nākamajā izkārtojumā - tabulu.

Rakurstabulas piemērs bez TableFunc:

Lai sāktu darbu pie PostgreSQL pagriešanas ar moduli 'tablefunc', jums ir jāmēģina izveidot rakurstabulu bez tā. Tātad, atvērsim komandrindas čaulu PostgreSQL un norādīsim nepieciešamā servera, datu bāzes, porta numura, lietotājvārda un paroles parametru vērtības. Atstājiet šos parametrus tukšus, ja vēlaties izmantot noklusējuma atlasītos parametrus.

Mēs izveidosim jaunu tabulu ar nosaukumu “Test” datu bāzē “test” ar dažiem laukiem, kā parādīts zemāk.

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

Pēc tabulas izveides ir pienācis laiks tabulā ievietot dažas vērtības, kā parādīts zemāk esošajā vaicājumā.

>> INSERT INTO Test (Id, name, sal, job) VĒRTĪBAS (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', (50000, 'ārsts'), (12, 'Raza', 40000, 'virsnieks'), (11, 'Raza', 60000, 'ārsts'), (12, 'Raza', 67000, 'virsnieks'), ( 13, 'Saeed', 85000, 'Writer'), (13, 'Saeed', 69000, 'Officer'), (13, 'Saeed', 90000, 'Doctor');

Var redzēt, ka attiecīgie dati ir veiksmīgi ievietoti. Varat redzēt, ka šajā tabulā ir vairāk nekā viena no tām pašām ID, nosaukuma un darba vērtībām.

>> SELECT * FROM ieeja;

Izveidosim rakurstabulu, kurā tiks apkopots tabulas 'Test' ieraksts, izmantojot zemāk esošo vaicājumu. Komanda vienā rindā apvieno tās pašas kolonnas “Id” un “name”, vienlaikus ņemot vienādu datu kolonnas “alga” vērtību saskaņā ar “Id” un “name”. Tas arī norāda, cik reizes viena vērtība ir notikusi konkrētajā vērtību kopā.

>> SELECT ID, vārds, summa (sal) sal, summa ((darbs = 'ārsts') :: int) ārsts, summa ((darbs = 'rakstnieks') :: int) rakstnieks, summa ((darbs = 'virsnieks) ') :: int) "Virsnieks" NO TESTU GRUPAS PĒC ID, vārds;

Pivot tabulas piemērs ar TableFunc:

Sāksim, izskaidrojot mūsu galveno aspektu no reālistiskā viedokļa, un pēc tam aprakstīsim rakurstabulas izveidi mums patīkamajās darbībās. Tātad, pirmkārt, jums jāpievieno trīs tabulas, lai strādātu pie šarnīra. Pirmā tabula, kuru mēs izveidosim, ir "Aplauzums", kurā tiks glabāta informācija par kosmētikas pamatiem. Lai izveidotu šo tabulu, komandrindas čaulā izmēģiniet šo vaicājumu.

>> IZVEIDOT TABULU, JA NAV PASTĀVS Aplauzums (make_Id int PRIMĀRĀ ATSLĒGA, p_nosaukums VARCHAR (100) NOT NULL);

Pēc tabulas 'Makeup' izveidošanas pievienosim tai dažus ierakstus. Mēs izpildīsim zemāk uzskaitīto vaicājumu čaulā, lai šai tabulai pievienotu 10 ierakstus.

Mums ir jāizveido vēl viena tabula ar nosaukumu “lietotāji”, kas glabā to lietotāju uzskaiti, kuri izmanto šos produktus. Lai izveidotu šo tabulu, izpildiet čaulā zemāk norādīto vaicājumu.

>> IZVEIDOT TABULU, JA NEBŪTU lietotāji (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Mēs esam ievietojuši 20 ierakstus tabulai “lietotāji”, kā parādīts zemāk esošajā attēlā.

Mums ir vēl viena tabula “makeup_user”, kurā glabāsies gan tabulas “Makeup”, gan “users” savstarpējie ieraksti. Tam ir vēl viens lauks “cena”, kas ietaupīs produkta cenu. Tabula ir izveidota, izmantojot zemāk norādīto vaicājumu.

>> IZVEIDOT TABULU, JA NEBŪT, makeup_user (ID int PRIMĀRĀS ATSLĒGAS, Mid int NAV NULL ATSAUCES Aplauzums (make_Id), Uid int NOT NULL ATSAUCES lietotāji (user_id), cenas decimāldaļa (18,2));

Šajā tabulā kopā esam ievietojuši 56 ierakstus, kā parādīts attēlā.

Veidosim skatu tālāk, lai to izmantotu rakurstabulas ģenerēšanai. Šajā skatā tiek izmantots INNER Join, lai saskaņotu visu trīs tabulu primārās atslēgas kolonnu vērtības un no tabulas “klienti” iegūtu produkta “nosaukums”, “produkta nosaukums” un “izmaksas”

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, lpp.p_nosaukums, pc.cena NO lietotājiem c INNER JOIN makeup_user pc ON c.user_id = pc.Uid INNER JOIN Aplauzums p ON pc.Vidus = p.make_Id;

Lai to izmantotu, vispirms ir jāinstalē pakete tablefunc datu bāzei, kuru vēlaties izmantot. Šī pakete ir iebūvēta PostgreSQL 9.1 un vēlāk atbrīvots, izpildot zemāk norādīto komandu. Pakalpojums tablefunc tagad ir iespējots.

>> IZVEIDOT PAPLAŠINĀŠANU, JA NEBŪT tablefunc;

Pēc paplašinājuma izveides ir pienācis laiks izmantot funkciju Crosstab (), lai izveidotu rakurstabulu. Tātad, lai to izdarītu, komandrindas apvalkā izmantosim šādu vaicājumu. Šis vaicājums vispirms ienes ierakstu no jaunizveidotā skata. Šie ieraksti tiks sakārtoti un grupēti pēc augošā secības kolonnās “u_name” un “p_name”. Mēs esam uzskaitījuši viņa aplauzuma nosaukumu katram klientam, kuru viņi ir iegādājušies, un tabulā nopirkto produktu kopējās izmaksas. Kolonnā “p_name” esam izmantojuši operatoru UNION ALL, lai apkopotu visus produktus, kurus atsevišķi iegādājies viens klients. Tādējādi tiks summētas visas lietotāja iegādāto produktu izmaksas vienā vērtībā.

Mūsu rakurstabula ir gatava un parādīta attēlā. Jūs skaidri redzat, ka zem katras p_name dažas kolonnu atstarpes ir tukšas, jo tās nav iegādājušās konkrēto produktu.

Secinājums:

Tagad mēs esam lieliski iemācījušies izveidot rakurstabulu, lai apkopotu tabulu rezultātus, izmantojot paketi Tablefunc un bez tās.

Tomb Raider for Linux apmācība
Tomb Raider ēna ir divpadsmitais papildinājums Tomb Raider sērijai - darbības piedzīvojumu spēļu franšīzei, kuru izveidoja Eidos Montreal. Spēli gan k...
Kā palielināt FPS Linux?
FPS apzīmē Kadri sekundē. FPS uzdevums ir izmērīt kadru ātrumu video atskaņošanā vai spēļu izrādēs. Vienkāršos vārdos nepārtrauktu pilnekrāna attēlu s...
Populārākās Oculus App Lab spēles
Ja esat Oculus austiņu īpašnieks, jums ir jāsazinās par sānu ielādi. Sānu ielāde ir process, kurā austiņās tiek instalēts saturs, kas nav veikals. Sid...