|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Menu
Distributions (131)
bootable [55]
commercial [7] no-commercial [42] unclassified [20] [7]
Software (10844)
|
PostgreSQL (8) - SELECT II.Další možnosti výběru dat z PostgreSQL, tentokráte se zaměřením na funkce pro zpracování dat a operace s daty z výběru.
Při výběru dat z tabulky je efektivnější a rychlejší zpracovat pokud možno co největší část dat zpracovat ihned na straně PostgreSQL serveru. Pro zpracování číselných dat jsou k dispozici aritmetické operace a funkce. Funkce a operátory lze kombinovat a zanořovat stejně, jako v každém programovacím jazyce, jediným rozdílem je, že se výsledek nepřiřazuje do proměnné. Název, pod kterým bude výsledná hodnota vrácena lze určit klíčovým slovem AS. Syntaxe zápisu operátorů a funkcí je uvedena níže. Na místě proměnných mohou být hodnoty vybrané z tabulky (tj. názvy sloupců), ale i konstanty zadané SQL dotazu a funkce nezávislé na datech (aktuální datum/čas, náhodné číslo,...). SELECT a operator b AS jmeno ... SELECT a oper1 (b oper2 c) AS jmeno ... SELECT fce1(a) AS jmeno ... SELECT fce2(a oper1 fce2(b)) AS jmeno ... Operace s číselnými datyOperace s číselnými hodnotami jsou standardní,pro celá čísla jsou k dispozici logické operace. Níže uvedená tabulka uvádí základní aritmetické operátory.
Exklusivní bitového součet (XOR) je definová tak, že jsou-li na stejné pozici (míněno stejném bitu) stejné hodnoty, je výsledkem v tomto bitu 0, liší-li se tyto hodnoty, tj jedna je 0 a druhá je jedna, je výsledkem tohoto bitového součtu hodnota 1. Tento operátor se používá často v hrách a při šifrování. Kromě běžných aritmetických přistupují i operátory pro práci s binárními řetězci (BIT, BIT VARYING). Binární řetězce pro operace &, # a | musí mít stejnou délku, bitové posuny zachovávají délku původního řetězce a neuchovávají bit, který "přetekl". Pro upřesnění toho, že se jedná i bitová pole lze dát před konstantu prefix "B", toto je podobné, jako v jazyce C/C++. Níže jsou uvedeny již jen příklady bez vysvětlování významu operátorů. SELECT B'10101' & B'10011' AS bitsoucin; SELECT B'10101' | B'10011' AS bitsoucet; SELECT B'10101' # B'10011' AS bitxor; SELECT ~B'10101' AS bitnot; SELECT B'10101' << 2 AS lposun; SELECT B'10011' >> 3 AS pposun; Číselné funkceFunkce pro práci s desetinnými čísly (přesnost V níže uvedém seznamu funkcí je použito označení [dp], pokud je výstupní hodnota typu
Agregační funkceZískaná data z databáze lze zpracovat též pomocí agregačních funkcí, které hodnoty z několika řádků zpracují do jedné, používají se například při sdružování dat do skupin pomocí GROUP BY a výběru pomocí HAVING. Přehled agregačních funkcí je v níže uvedené tabulce. Příklady a vysvětlení možností při práci s agregačními funkcemi jsou za přehledovou tabulkou. Výrazem v parametru může být pouze název sloupce, případně pomocí aritmetických operátorů a funkcí zpracovaný obsah více sloupců.
Příklady na použití agregačních funkcí: SELECT avg(unitprice), id_category, count(*) FROM products GROUP BY id_category; avg | id_category | count ----------------------+-------------+------- 125.0000000000000000 | 3 | 2 50.0000000000000000 | 2 | 2 SELECT sum(pieces*unitprice), id_category, stddev(unitprice),variance(unitprice) FROM products GROUP BY id_category; sum | id_category | stddev | variance ---------+-------------+---------------------+----------------------- 2750.00 | 3 | 35.3553390593273762 | 1250.0000000000000000 150.00 | 2 | 0 | 0 ZávěrTento díl byl zaměřen na vyjmenování funkcí a operátorů nad čísly a binárními řetězci, společně s vyjmenováním agregačních funkcí, použitelných při výběru dat společně s jejich seskupováním pomocí GROUP BY, či omezování výběru pomocí agregačních funkcí použitím HAVING. Pro někoho mohl být tento díl trochu nudnější a připomínat přepis dokumentace, ale v takovýchto případech se příručka ani moc jinak uspořádat nedá. Bohužel ještě budou nejméně dva takovéto díly, protože zbývají funkce pro práci s řetězci, s datumem/časem, geometrickými a sítovými typy.
Related article
PostgreSQL (1) - Historie a pohledy jinam PostgreSQL (2) - Proč PgSQL, data a relace PostgreSQL (3) - Instalace, základní administrace PostgreSQL (4) - Datové typy, vytvoření tabulek PostgreSQL (5) - Další datové typy a práce s časem i binarními řetězci PostgreSQL (6) - Uložení, aktualizace a mazání dat. PostgreSQL (7) - Výběr dat z databáze PostgreSQL (9) – SELECT III PostgreSQL (10) - SELECT IV PostgreSQL (11) - Výběr pomocí vzorků PostgreSQL 12 - urychlení výběrů PostgreSQL (13) - Na co se zapomnělo PostgreSQL (14) - omezení dat (Constraints) PostgreSQL (15) - Transakce PostgreSQL (16) - Zamykání PostgreSQL (17) - Datový typ pole PostgreSQL (18) - Datový typ pole II PostgreSQL (19) - Vlastní datové typy PostgreSQL (20) - Vlastní datové typy II PostgreSQL (21) - Spojování dotazů PostgreSQL (22) - Poddotazy PostgreSQL (23) - Optimalizujeme rychlost PostgreSQL (24) - Views (Pohledy) PostgreSQL (25) - Administrace skupin a uživatelů PostgreSQL (26) - Rozšiřujeme funkčnost Previous Show category (serial) Next
|
Szukanie oprogramowania
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
©Pavel Kysilka - 2003-2024 | maillinuxsoft.cz | Design: www.megadesign.cz |