Jak používat křížový modul PostrgreSQL

Jak Pouzivat Krizovy Modul Postrgresql



Když spustíte příkaz SELECT pro načtení záznamů z PostgreSQL tabulky, data se vrátí ve formě tabulky. Tabulková forma nemusí být pro čtení dat vždy nejlepší, zvláště když chcete hodnoty porovnat. Lepší přístup je vrátit záznamy jako kontingenční tabulku. Za tímto účelem PostgreSQL nabízí funkci tablefunc, která uživatelům umožňuje využít funkci křížové tabulky k reprezentaci cílových dat jako kontingenční tabulky. Tento příspěvek více rozvádí, jak používat funkci křížové tabulky PostgreSQL. Číst dál!

Práce s modulem PostgreSQL Crosstab Module

Mít místnost, kde můžete určit, jak chcete, aby byla vaše data reprezentována, je užitečné. S PostgreSQL, ačkoli výchozím způsobem je mít data v tabulkové formě, modul křížové tabulky vám dává jinou možnost. Kontingenční tabulky můžete vytvořit pomocí „vybrat“ sloupců z tabulky PostgreSQL pro lepší prezentaci.

Úžasná funkce přichází jako rozšíření pro PostgreSQL verze 8.3. Rozšíření „tablefunc“ nabízí funkci křížové tabulky, která umožňuje mít kontingenční tabulky jako sadu výsledků. Uveďme příklad.







Nejprve vytvoříme tabulku „výsledků“ se třemi sloupci pomocí následujícího příkazu:





Vytvořená tabulka je prázdná. Pokračujte tedy a pomocí dotazu INSERT do něj přidejte hodnoty. Pro tento případ vložíme několik položek, jak je znázorněno v následujícím:





Pokud spustíme příkaz „select“, dostaneme následující výsledky. Všimněte si, jak je tento výchozí způsob získávání záznamů prezentuje v tabulkové formě. Sloupce se používají jako záhlaví a jejich příslušné hodnoty se zobrazují v řádcích:



Ačkoli předchozí přístup funguje pro většinu případů, existuje další možnost, jak získat stejné záznamy. Pro tento případ chceme vytvořit kontingenční tabulku. Proto používáme rozšíření „tablefunc“, které je součástí PostgreSQL verze 8.3+.


Pojďme tedy vytvořit rozšíření „tablefunc“, které jej povolí, když jej zavoláme v dotazu. Proveďte následující příkaz:

VYTVOŘIT ROZŠÍŘENÍ, POKUD NEEXISTUJE tablefunc ;

Jakmile získáte výstup podobný tomu, který máme na předchozím obrázku, budete vědět, že rozšíření bylo úspěšně povoleno.

Pro naši funkci křížové tabulky udělejme to tak, že první sloupec je fakulta. Pod ním jsou různé fakulty, které máme v naší tabulce. Vedle sloupce fakulty máme další sloupce, které představují různé hodnoty ve sloupci kategorie naší tabulky. Nakonec pro každou kategorii máme počet studentů, kteří dosáhli různých kategorií.

K dosažení takové kontingenční tabulky použijte následující syntaxi:

VYBRAT * OD CROSTABU ( „VYBRAT sloupec1 , sloupec2 , sloupec3 FROM název_tabulky ORDER BY kritériaa' )

AS nové_jméno ( sloupec1 datový_typ , sloupec2 datový_typ , sloupec_n datový_typ ) ;

S použitím vzorové tabulky, kterou jsme vytvořili, vypadá náš příkaz takto:

Než uvidíme výsledky, pojďme si udělat rozpis toho, jak funguje příkaz modulu kontingenční tabulky. Nejprve příkaz SELECT vrátí tři sloupce. První sloupec je považován za identifikátor řádku. V našem případě je to kolonka „fakulta“. Druhý sloupec, což je sloupec „kategorie“, představuje kategorie pro kontingenční tabulku. Konečně třetí sloupec obsahuje hodnoty pro kategorie. V našem případě je to počet žáků v jednotlivých kategoriích.

Když to pochopíme, jakmile stiskneme klávesu „Enter“, dostaneme kontingenční tabulku následovně:

Na základě vrácené kontingenční tabulky můžeme vidět, že funguje jako 2D pole, kde první sloupec v příkazu SELECT je první pole a druhý sloupec je druhé pole v dimenzi. Třetí sloupec obsahuje hodnoty pro druhé prvky pole.

Závěr

Křížová tabulka PostgreSQL je dobrá pro reprezentaci hodnot tabulky jako kontingenční tabulky. Chcete-li použít modul křížové tabulky, musíte ve svém příkazu SELECT vrátit tři sloupce a tento příspěvek sdílí praktický příklad, jak jej používat. Kromě toho jsme vysvětlili, jak modul kontingenční tabulky funguje při vytváření kontingenční tabulky, která používá stejnou logiku jako 2D pole.