PostgreSQL

Pivot Tablefunc segítségével / nélkül

Pivot Tablefunc segítségével / nélkül

A kimutatási táblázat hatékony eszköz az adatok becslésére, összeállítására és áttekintésére, hogy a mintákat és trendeket még könnyebben megtalálja. A kimutató táblázatok felhasználhatók egy adatkészlet összesítésére, rendezésére, elrendezésére, átrendezésére, csoportosítására, összesítésére vagy átlagára, hogy valóban megértsék az adattársításokat és függőségeket. A pivot tábla szemléltetése a legegyszerűbb módszer a módszer működésének bemutatására. PostgreSQL 8.Néhány évvel ezelőtt indult a 3, és új verziójatablefunc' hozzá lett adva. Tablefunc egy olyan összetevő, amely számos metódust tartalmaz, amelyek táblákat eredményeznek (vagyis több sort). Ez a módosítás nagyon jó funkciókkal rendelkezik. Ezek közé tartozik a kereszttábla módszer is, amelyet pivot táblák létrehozására használnak. A kereszttábla metódus szöveges argumentumot vesz fel: egy SQL parancs, amely az első elrendezésben nyers adatokat, a következő elrendezésben pedig egy táblázatot ad vissza.

Példa a kimutatásra TableFunc nélkül:

A PostgreSQL a „tablefunc” modullal történő elfordításának megkezdéséhez meg kell próbálni anélkül létrehozni egy pivot táblázatot. Nyissuk meg tehát a PostgreSQL parancssori héjat, és adjuk meg a szükséges szerver, adatbázis, portszám, felhasználónév és jelszó paraméterértékeit. Hagyja üresen ezeket a paramétereket, ha az alapértelmezetten kiválasztott paramétereket szeretné használni.

Létrehozunk egy új "Test" nevű táblázatot az "teszt" adatbázisban, benne néhány mezővel, az alábbiak szerint.

>> CREATE TABLE Test (Id int, név varchar (20), sal int, job varchar (20));

Tábla létrehozása után ideje beszúrni néhány értéket a táblázatba, az alábbi lekérdezés szerint.

>> INSERT INTO Test (Id, név, sal, állás) ÉRTÉKEK (11, 'Aqsa', 45000, 'Writer'), (11, 'Aqsa', 48000, 'Officer'), (11, 'Aqsa', (50000, „Orvos”), (12, „Raza”, 40000, „Tiszt”), (11, „Raza”, 60000, „Orvos”), (12, „Raza”, 67000, „Tiszt”), ( 13, „Saeed”, 85000, „író”), (13, „Saeed”, 69000, „tiszt”), (13, „Saeed”, 90000, „orvos”);

Láthatja, hogy a releváns adatokat sikeresen beillesztette. Láthatja, hogy ez a táblázat több mint 1 azonos értéket tartalmaz az azonosítóhoz, a névhez és a jobhoz.

>> SELECT * FROM bemenet;

Hozzunk létre egy pivot táblázatot, amely összefoglalja a 'Test' tábla rekordját az alábbi lekérdezés segítségével. A parancs egy sorba egyesíti az „Id” és a „name” oszlop ugyanazokat az értékeit, miközben az „Id” és a „name” szerint felveszi ugyanazon adatok „fizetés” oszlopának összegét. Azt is megmondja, hogy egy adott érték hányszor fordult elő az adott értékkészletben.

>> SELECT ID, név, összeg (sal) sal, sum ((job = 'orvos') :: int) orvos, összeg ((job = 'író') :: int) író, összeg ((job = 'tiszt) ') :: int) "Tiszt" A tesztcsoportból ID, név;

Példa forgatótáblára a TableFunc segítségével:

Kezdjük azzal, hogy reális szempontból elmagyarázzuk fő szempontunkat, majd nekünk tetsző lépésekben leírjuk a pivot tábla létrehozását. Tehát először is három táblázatot kell hozzáadnia, hogy a forgócsapon dolgozzon. Az első táblázat, amelyet létrehozni fogunk, a „Smink”, amely információkat tárol a smink nélkülözhetetlen tárgyairól. Próbálkozzon az alábbi lekérdezéssel a parancssori héjban ennek a táblának a létrehozásához.

>> Hozza létre a táblázatot, ha nem létezik smink (make_Id int PRIMARY KEY, p_name VARCHAR (100) NOT NULL);

A 'Makeup' tábla létrehozása után adjunk hozzá néhány rekordot. Az alább felsorolt ​​lekérdezést a shellben hajtjuk végre, hogy 10 rekordot adjunk hozzá ehhez a táblához.

Létre kell hoznunk egy másik, „felhasználók” nevű táblázatot, amely az adott termékeket használó felhasználók nyilvántartását fogja vezetni. A táblázat létrehozásához hajtsa végre az alább megadott lekérdezést a shellben.

>> TÁBLÁZAT LÉTREHOZÁSA, HA NEM LÉT felhasználók (user_id int PRIMARY KEY, u_name varchar (100) NOT NULL);

Beillesztettük a „felhasználók” tábla 20 rekordját az alábbi képen látható módon.

Van egy másik asztalunk, a „makeup_user”, amely a „Smink” és a „Felhasználók” táblázatok kölcsönös nyilvántartását fogja vezetni. Van egy másik mezője, az „ár”, amely megspórolja a termék árát. A tábla az alábbi lekérdezés használatával készült.

>> TÁBLÁZAT LÉTREHOZÁSA, HA NEM LÉTEZIK makeup_user (ID int ELSŐ KULCS, Mid int NEM NULL REFERENCES Smink (make_Id), Uid int NOT NULL REFERENCES felhasználók (user_id), ár decimális (18,2));

Összesen 56 rekordot illesztettünk ebbe a táblázatba, a képen látható módon.

Hozzon létre egy nézetet tovább, hogy felhasználja azt egy pivot tábla létrehozásához. Ez a nézet az INNER Join funkcióval egészíti ki a három táblázat elsődleges kulcs oszlopértékeit, és lekéri a termék „nevét”, „terméknevét” és „költségét” az „ügyfelek” táblából

>> CREATE VIEW v_makeup_users AS SELECT c.u_name, o.p_name, pc.ár a felhasználóktól c BELSŐ CSATLAKOZÁS smink_felhasználó pc BE c.user_id = pc.Uid INNER JOIN Smink p ON pc.Közép = p.make_Id;

Ennek használatához először telepítenie kell a tablefunc csomagot a használni kívánt adatbázishoz. Ez a csomag beépített PostgreSQL 9.1 és később kiadva az alább megadott parancs futtatásával. A tablefunc csomag már engedélyezve van az Ön számára.

>> LÉTREHOZ BŐVÍTÉSET, HA NEM LÉTEZIK tablefunc;

A kiterjesztés létrehozása után itt az ideje a Crosstab () függvény használatával létrehozni egy forgatótáblát. Tehát a következő lekérdezést fogjuk használni a parancssori shellben. Ez a lekérdezés először tölti be a rekordot az újonnan létrehozott "View" -ból. Ezeket a rekordokat az „u_name” és a „p_name” oszlopok növekvő sorrendjében rendezik és csoportosítják. A táblázatban felsoroltuk minden vásárló sminknevét és vásárolt termékeinek teljes költségét. A „p_name” oszlopban az UNION ALL operátort alkalmaztuk az összes vásárló által külön megvásárolt termékek összesítésére. Ez egy értékben összesíti a felhasználó által megvásárolt termékek összes költségét.

A Pivot-táblánk készen áll, és megjelenik a képen. Jól látható, hogy egyes oszlopok üresek minden p_name alatt, mert nem vásárolták meg az adott terméket.

Következtetés:

Ragyogóan megtanultuk, hogyan hozzunk létre egy pivot táblázatot, amely összefoglalja a táblázatok eredményeit a Tablefunc csomag használatával és anélkül.

A legjobb játékok kézi követéssel
Az Oculus Quest nemrégiben bemutatta a vezérlés nélküli kézi követés nagyszerű ötletét. Az egyre növekvő számú játékkal és tevékenységgel, amelyek tám...
Az OSD-fedvény megjelenítése teljes képernyős Linux-alkalmazásokban és játékokban
Teljes képernyős játékok lejátszása vagy alkalmazások figyelemelterelés nélküli, teljes képernyős módban történő használata elvághatja a panelen vagy ...
Az 5 legjobb játékrögzítő kártya
Mindannyian láttuk és szerettük a YouTube-on a streaming játékokat. A PewDiePie, a Jakesepticye és a Markiplier csak néhány a legnépszerűbb játékosok ...