Kontakty

Celková suma SQL. Súhrnné funkcie SQL - súčet, min, max, avg, počítať. Parametre alebo argumenty

Výpočty

Záverečné funkcie

V výrazoch SQL požiadavky je často potrebné predskupiť údaje. Na tento účel sa používajú špeciálne funkcie a výrazy.

Pomerne často, musíte vedieť, koľko záznamov zodpovedá konkrétnej žiadosti,aký je súčet hodnôt niektorého numerického stĺpca, jeho maximálna, minimálna a stredná hodnota. To slúži tzv. Finálne (štatistické, agregované) funkcie. Konečné funkcie spracovávajú súbory zadaných záznamov, napríklad výraz, kde. Ak sú zahrnuté do zoznamu stĺpcov podľa výberu vyhlásenia, tabuľka výsledkov bude obsahovať nielen stĺpce databázovej tabuľky, ale aj hodnoty vypočítané pomocou týchto funkcií. Čítaj viaczoznam záverečných funkcií.

  • Počet (parameter ) - Vracia počet záznamov uvedených v parametri. Ak chcete získať číslo všetkých záznamov, mali by ste zadať symbol hviezdičky (*). Ak zadáte názov stĺpca ako parameter, funkcia vráti počet položiek, v ktorých má tento stĺpec iný ako null. Ak chcete zistiť, koľko rôznych hodnôt obsahuje stĺpec, mali by ste pred ním špecifikovať odlišné kľúčové slovo. Napríklad:

Vyberte počet (*) od klientov;

Zvoľte COUNT (Sale QUARD) od klientov;

Vyberte počet (odlišné sum_name) od zákazníkov;

Pokus o vykonanie nasledujúceho dotazu sa zobrazí chybové hlásenie:

Vyberte oblasť, počet (*) od klientov;

  • Suma (parameter ) - Vracia množstvo hodnôt stĺpca uvedeného v parametri. Parameter môže byť expresia obsahujúca názov stĺpca. Napríklad:

Vyberte SUM. (Hodnota_name) od zákazníkov;

Tento výraz SQL vráti tabuľku pozostávajúcu z jedného stĺpca a jedného záznamu a obsahuje súčet všetkých určitých hodnôt stĺpca stĺpca z tabuľky klienta.

Predpokladajme, že v zdrojovej tabuľke je hodnota sumy stĺpca vyjadrená v rubľach, a musíme vypočítať celkové množstvo v dolároch. Ak je aktuálny výmenný kurz, napríklad 27,8, potom je možné získať požadovaný výsledok pomocou expresie:

Vyberte SUM. (Sum_name * 27.8) od zákazníkov;

  • AVG (parameter ) - vráti aritmetický priemer všetkých hodnôt uvedených v parametri stĺpcov. Parameter môže byť expresia obsahujúca názov stĺpca. Napríklad:

Vyberte AVG (SUM_NAME) od zákazníkov;

Vyberte AVG (SUM_NAME * 27.8) od zákazníkov

Kde región<> "North_3APAD";

  • Mach (parameter ) - Vráti maximálnu hodnotu v stĺpci uvedenom v parametri. Parameter môže byť tiež výrazom obsahujúci názov stĺpca. Napríklad:

Vyberte Max (SUM__NCE) od zákazníkov;

Vyberte Mach (SUM_NAME * 27.8) od zákazníkov

Kde. Región<> "North_3APAD";

  • Min (parameter ) - Vráti minimálnu hodnotu v stĺpci uvedenej v parametri. Parameter môže byť expresia obsahujúca názov stĺpca. Napríklad:

Vyberte min (Predaj objednávky) od zákazníkov;

Vyberte min (SUM__NCE * 27. 8) od zákazníkov

Kde. Región<> "North_3APAD";

V praxi je často potrebné získať konečnú tabuľku obsahujúcu celkové, priemerné, maximálne a minimálne hodnoty numerických stĺpcov. Ak to chcete urobiť, použite skupinu podľa skupiny (skupina podľa) a záverečných funkcií.

Vyberte oblasť, sumu (Sumader) od zákazníkov

Skupiny podľa regiónov;

Výsledková tabuľka pre túto požiadavku obsahuje názvy regiónov a celkovú (všeobecnú) výška objednávok všetkých zákazníkov z príslušných regiónov (obr. 5).

Teraz zvážte žiadosť o získanie všetkých konečných údajov podľa regiónov:

Vyberte oblasť, SUM (SUP OPTION), AVG (Sum_name), max (sum_name),Min (sum_name)

Od klientov

Skupiny podľa regiónov;

Zdrojové a výsledkové tabuľky sú znázornené na obr. 8. V príklade je v zdrojovej tabuľke prezentovaný iba severozápadný región s viac ako jedným záznamom. Preto v tabuľke výsledkov pre neho dávajú rôzne výsledky rôzne hodnoty.

Obr. 8. Konečná tabuľka Výška objednávok podľa regiónu

Pri použití konečných funkcií v zozname stĺpcov vo výbere, hlavičky zodpovedajúce v tabuľke výsledkov majú výskyt expr1001, expr1002 atď. (alebo niečo podobné, v závislosti od implementácie SQL). Avšak titulky pre hodnoty konečných funkcií a iných stĺpcov, ktoré môžete nastaviť podľa vášho uváženia. Urobte to dostatočne po stĺpci v zozname Select, špecifikujte výraz formulára:

Ako titul_stolbets

Ako kľúčové slovo (ako) znamená, že v tabuľke výsledkov musí mať zodpovedajúci stĺpec uvedený po tom, ako. Vymenovaný záhlavie sa nazýva aj pseudonym. V nasledujúcom príklade (obr. 9), pseudonyms sú nastavené pre všetky vypočítané stĺpce:

Vyberte oblasť,

Suma. (Sum_name) ako [celková suma objednávky],

AVG. (Súčet objednávky) ako [priemerné množstvo objednávky],

Max (sum_name) ako maximum

Min. (Sum_name) ako minimum,

Od klientov

Skupiny podľa regiónov;

Obr. 9. Záverečná tabuľka objednávok podľa regiónov pomocou stĺpcov alias

Pseudonyms, pozostávajúci z niekoľkých slov oddelených medzerami, sú štvorcové konzoly.

Konečné funkcie môžu byť použité vo výbere a vymazaní výrazov, ale nemôžu byť použité v tom, kde je expresia. Onerater je podobný operátorovi, ale na rozdiel od toho, kde vyberie záznamy v skupinách.

Predpokladajme, že je potrebné určiť, v ktorých regiónoch viac ako jeden klient. Na tento účel môžete použiť túto požiadavku:

Vyberte oblasť, počet (*)

Od klientov

Skupina podľa regiónu, ktorá má počet (*)\u003e 1;

Funkcie na spracovanie hodnôt

Pri práci s údajmi, často ich musia spracovať (konvertovať na požadovanú formu): vyberte niektoré podreťazce v linke, odstráňte vedúce a konečné medzery, zaokrúhľte číslo, vypočítajte druhú odmocninu, určte aktuálny čas atď. V SQL sú k dispozícii tri typy funkcií:

  • string funkcie;
  • číselné funkcie;
  • funkcie dátumu.

Funkcie reťazcov

Funkcie reťazca sa berú ako parameter reťazca a návrat po spracovaní reťazca alebo null.

  • Podrezanie (Reťazec od začiatku) - vráti podklad získané z reťazca, ktorý je špecifikovaný ako parameterriadok. Podrezanie Začína so znakom, ktorého poradové číslo je uvedené v parametri štart, a má dĺžku uvedenú v parametri dĺžky. Číslovanie symbolov reťazcov sa vykonáva zľava doprava, počnúc 1. HROHOVÝMI HARDIKOVÝMI TU UČÍLIŤ Iba skutočnosť, že expresia uzavretá v nich nie je povinná. Ak výrazPre dĺžku nepoužíva sa, potom sa podrezanie vrátispustiť a až do konca zdroja. Hodnoty parametrovdomov a dĺžka Musí byť vybraný tak, aby požadovaný podreťazc bol skutočne vo vnútri zdrojovej línie. V opačnom prípade sa funkcia podregu vráti null.

Napríklad:

Substring ("Drahý Masha!" Od 9 pre 4) - vráti "Masha";

Substring ("Drahý Masha!" Od 9) -ards "Masha!";

Substring ("Drahý Masha!" Od 15) je null.

Túto funkciu môžete použiť napríklad v SQL Expression, napríklad nasledovne:

Vyberte * od zákazníkov

Kde substrát (oblasť od 1 na 5) \u003d "sever";

  • Horný (reťazec ) - Prenesenia všetkých znakov uvedených v parametri reťazca do veľkých písmen.
  • Nižší ) - Prevody všetkých znakov uvedených v parametri reťazca do nižšieho registra.
  • Trim (popredné | Trailing | obidva ["symbol"] z radu ) - Vymaže vedúce (vedúce), konečné (koncovky) alebo tých a iných (oba) znaky z reťazca. V predvolenom nastavení je vzdialený symbol priestor (""), takže nemôže byť uvedený. Najčastejšie sa táto funkcia používa presne na odstránenie medzier.

Napríklad:

Trim (vedúci "" z "mesta Petrohrad") otáča "mesto St. Petersburg";

Trim (Traruing "" z "mesto St. Petersburg") vracia mesto Petrohradu;

Trim (obaja "" z "mesta Petrohrad") - vráti mesto Petrohradu;

Trim (oba "mesto St. Petersburg") - vráti mesto Petrohradu;

Trim (Obaja "pán" z "Mesto St. Petersburg") - vráti "St. Petersburg Orod".

Medzi tieto funkcie sú najčastejšie používané - substring () a orezanie ().

Číselné funkcie

Číselné funkcie ako parameter môžu prijímať údaje nielen numerický typ, ale vždy vráti číslo alebo null (neurčitá hodnota).

  • Pozícia ( tRIGHTSKROCK IN SREET) - Vyhľadanie záznamu cieľovej čiary na zadaný reťazec. V prípade úspešného vyhľadávania vráti číslo pozície svojho prvého znaku, inak - 0. Ak cieľový riadok má nulová dĺžka (napríklad reťazec "), potom sa funkcia vráti 1. Ak aspoň jeden z parametrov je , null sa vráti. Číslovanie symbolov reťazcov sa vykonáva zľava doprava, počnúc 1.

Napríklad:

("E" v "Ahoj všetci") - vráti 5;

("Všetko" v "Ahoj všetci") - vráti 8;

("Ahoj všetci") - vráti 1;

Pozícia ("Ahoj!" V "Ahoj všetci") - vráti 0.

V stola klientoch (pozri obr. 1) Stĺpec adresy obsahuje, okrem názvu mesta, PSČ, meno ulice a ďalších údajov. Možno budete musieť vybrať záznamy klienta žijúcich v konkrétnom meste. Takže ak potrebujete vybrať záznamy týkajúce sa zákazníkov žijúcich v St. Petersburg, môžete použiť nasledujúci výraz SQL požiadavky:

Vyberte * od zákazníkov

Kde pozícia ("St. Petersburg" v adrese)\u003e 0;

Všimnite si, že táto jednoduchá požiadavka na výber údajov môže byť formulovaná inak:

Vyberte * od zákazníkov

Kde adresa ako "% Petersburg%";

  • Extrakt (parameter ) - extrahuje prvok z typu dátumu dátumu alebo z intervalu. Napríklad:

Extrakt (mesiac od dátumu "2005-10-25") -vráti 10.

  • Charakter_Lestinácia (reťazec ) - vráti počet znakov v reťazci.

Napríklad:

Charact_length ("Ahoj všetci") - vráti 11.

  • Oktet_length (reťazec ) - Vráti počet oktetov (bajtov) v reťazci. Každý symbol latiny alebo cyrilického je jeden bajt, a symbol čínskej abecedy je dva bajty.
  • Kardinál (parameter ) - Preberá súbor prvkov ako parameter a vráti počet prvkov v kolekcii (kardinálne číslo). Zber môže byť napríklad s polevou alebo multisetom obsahujúcimi prvky rôznych typov.
  • Abs (číslo ) - vráti absolútnu hodnotu čísla. Napríklad:

Abs (-123) je 123;

ABS (2 - 5) - Vracia 3.

  • Mo d (číslo1, číslo2 ) - vráti rovnováhu celočíselnej divízie prvého čísla na druhú. Napríklad:

Mod (5, h) - vráti 2;

Mod (2, s) - vráti 0.

  • LN (číslo ) - vráti prirodzený logaritmus čísla.
  • Exr (číslo) - vráti sa (Základom prirodzeného logaritmu v rozsahu číslo).
  • Výkon (číslo1, číslo2 ) - Vracia číslo1Číslo2 (Číslo1 na číslo čísla2).
  • SQRT (číslo ) - Vracia odmocný koreň z.
  • Podlaha (číslo ) - Vráti najväčšie celé číslo, ktoré neprekračuje špecifikovaný parameter (zaokrúhlenie na menší smer). Napríklad:

Podlaha (5.123) - vráti 5.0.

  • SEIL (číslo) alebo strop (číslo ) - vráti najmenšie celé číslo, ktoré nie je menšie ako parameter zaokrúhľovania vo veľkom smere). Napríklad:

CEIL (5.123) - Vracia 6. 0.

  • Width_bucket. (NUMBER1, NUMBER2, NUMEROSE, NUMBERT4) Vráti celé číslo v rozsahu medzi 0 a NUMBERTIVO + 1. Parametre Číslo2 a Numerose špecifikujte číselný segment, rozdelený do rovnovážnych intervalov, ktorých číslo je nastavené podľa čísla 4. Funkcia určuje číslo intervalu, v ktorom hodnota číslo1. Ak je číslo1 mimo zadaného rozsahu, potom sa funkcia vráti 0 alebo číslo 4 + 1. Napríklad:

WIDTH_BUCKET (3.14, 0, 9, 5) - Vracia 2.

Funkcie dátumu času

Jazyk SQL má tri funkcie, ktoré vrátia aktuálny dátum a čas.

  • Aktuálny dátum. - vráti aktuálny dátum (typový dátum).

Napríklad: 2005-06-18.

  • Aktuálne_time (číslo ) - vráti aktuálny čas (typ času). Parameter celého čísla označuje presnosť predloženia sekúnd. Napríklad s hodnotou 2 sekundy bude prezentovaná s presnosťou stotín (dve číslice v zlomkovej časti):

12:39:45.27.

  • Aktuálny_timestamp (číslo ) - Vracia dátum a čas (Typ Timestamp). Napríklad 2005-06-18 12: 39: 45.27. Parameter celého čísla označuje presnosť predloženia sekúnd.

Všimnite si, že dátum a čas vrátené týmito funkciami nemajú typ symbolu. Ak ich chcete odoslať vo forme reťazcov znakov, potom by ste mali použiť cast () konverznej funkcie.

Funkcie dátumu sa zvyčajne používajú pri vkladaní požiadavkách, aktualizácii a odstraňovaní údajov. Napríklad pri písaní informácií o predaji v osobitne ustanovenom na to, je stĺpec vykoná aktuálny dátum a čas. Po zhrnutí mesiaca alebo štvrťroku sa dá údaje o predaji pre vykazované obdobie vymazali.

Vypočítané výrazy

Vypočítané výrazy sú konštruované z konštánt (numerické, reťazec, logické), funkcie, názvy poľa a údaje iných typov tým, že pripojíte ich aritmetické, reťazec, logické a iné operátory. Na druhej strane, výrazy môžu byť kombinované prostredníctvom operátorov v zložitejších (kompozitných) výrazoch. Kruhové zátvorky sa používajú na riadenie postupu na výpočet výrazov.

Logickí operátori A alebo nie a funkcie Boli preskúmané skôr.

Aritmetickí operátori:

  • + - pridanie;
  • - - Odčítanie;
  • * - Násobenie;
  • / - Divízia.

Operátor Iba jeden je obsluha kontextu alebo lepenie reťazca (|). V niektorých implementáciách SQL (napríklad Microsoft Access) namiesto (| |) sa používa symbol (+). Koncový operátor pripisuje druhý reťazec na koniec prvého príkladu, výraz:

"Sasha" | "Loves" | | "Masha"

sa vráti v dôsledku reťazca "SashaLubit Masha".

Pri výrobe výrazov je potrebné zabezpečiť, aby operátori operandy mali povolené typy. Napríklad expresia: 123 + "SASHA" je neprijateľná, pretože obsluha aritmetického pridávania sa aplikuje na operand reťazec.

Vypočítané výrazy môžu byť po výbere, ako aj v podmienkach podmienok a prevádzkovateľov HAVINg.

Zvážte niekoľko príkladov.

Nechajte predajný stôl obsahovať stĺpce typu typu, množstvo a cena, a musíme poznať príjmy pre každý typ výrobku. Na tento účel je to v zozname stĺpcov po tom, čo operátor Select zapnite Množstvo výrazu * Cena:

Vyberte TYPY_DASHOVAR, Množstvo, cena, Množstvo * CenaAko

Celkom od predaja;

Používa ako kľúčové slovo (ako) na nastavenie pseudonym stĺpca s vypočítanými údajmi.

Na obr. 10 ukazuje zdrojovú tabuľku predaja a výsledok tabuľky dotazu.

Obr. 10. Žiadosť má za následok výpočet príjmov pre každý typ tovaru

Ak chcete poznať celkové príjmy z predaja všetkého tovaru, stačí použiť nasledujúci dotaz:

Vyberte SUM. (Množstvo * Cena) z predaja;

Nasledujúci dotaz obsahuje vypočítané výrazy av zozname stĺpcov a v stave operátora. Vyberá si z tabuľky predaja tie tovary, príjmy z predaja, ktorého viac ako 1000:

Vyberte TYPY_TOVAR, Množstvo * Cena As Celkom

Z predaja

Kde číslo * Cena\u003e 1000;

Predpokladajme, že potrebujete získať tabuľku, v ktorej dva stĺpce:

Tovar obsahujúci druh tovaru a cenu;

Celkové obsahujúce príjmy.

Vzhľadom k tomu, že sa predpokladá, že v zdrojovej tabuľke predaja stĺpca TYP_LOVAR je symbolický (CHAR) a cenový stĺpec je číselný, potom pri kombinácii (lepenia) údajov z týchto stĺpcov je potrebné priniesť numerický typ Symbol pomocou funkcie Cast (). Žiadosť, ktorá vykonáva túto úlohu, vyzerá takto (obr. 11):

Vyberte TYPY_STOVAR | | "(Cena:" | Odstránenie (cena ako char (5)) | ")" ako výrobok, množstvo * cená

Z predaja;

Obr. 11. POŽIADAVKU VÝSLEDUJÚCICH DATABÍTNÝCH DATABÍKACH V jednom stĺpci

Poznámka. V Microsoft Access bude mať podobná požiadavka nasledujúci formulár:

Vyberte TYP_STOVAR + "(Cena:" + CStr. (Cena) + ")" ako výrobok,

Množstvo * Cena As Celkom

Z predaja;

Konvenčné výrazy s prevádzkovateľom prípadov

V obvyklých programovacích jazykoch existujú podmienené prechodné operátori, ktorí vám umožňujú ovládať proces výpočtovej techniky v závislosti od toho, či má alebo nemá určitú podmienku. V jazyku SQL je takýto operátorský prípad (prípad, okolnosť, kópia). V SQL: 2003, tento operátor vráti hodnotu, a preto môže byť použitá vo výrazoch. Má dve hlavné formy, ktoré v tejto časti zvážime.

Prevádzkovateľ prípadu s hodnotami

Prevádzkovateľ prípadu s hodnotami má nasledujúcu syntax:

CASE CHECKED_NEW

Keď hodnota1 potom výsledku1

Keď je hodnota 0, potom resuletat2

. . .

Keď menu n potom výsledok n

Iné výsledky

V prípade, keď skontrolovaný Rovnako hodnota1 Prevádzkovateľ prípadu vráti hodnotuvýsledok1 , Zadaný po potom kľúčové slovo. V opačnom prípade sa overiteľnosť porovnávavýznam2. a ak sú rovnaké, potom sa vráti hodnota výsledku2. V opačnom prípade sa overená hodnota porovnáva s nasledujúcou hodnotou označenou po kľúčovom slova (kedy) atď. Ak je hodnota overiteľnosti nie je rovná jednej z týchto hodnôt, potom sa hodnota vrátivýsledok X. označené za kľúčovým slovom (inak).

Kľúčové slovo nie je povinné. Ak chýba a žiadna z hodnôt, ktoré podliehajú porovnaniu, nie je rovná ocenenej hodnote, obsluha prípadu sa vracia null.

Predpokladajme, že na základe tabuľky klienta (pozri obr. 1), je potrebné získať tabuľku, v ktorej sú mená regiónov nahradené ich kódmi. Ak nie je príliš veľa rôznych regiónov v zdrojovej tabuľke, potom je vhodné použiť žiadosť s prípadovým operátorom na riešenie tejto úlohy:

Vyberte Názov, adresu,

Oblasť

Keď "Moskva" potom "77"

Keď "Tver Region" potom "69"

. . .

Inak

Ako kód regiónu

Od zákazníkov;

Prevádzkovateľ prípadu s vyhľadávacími podmienkami

Druhá forma prevádzkovateľa prípadu preberá jeho použitie pri vyhľadávaní v tabuľke týchto záznamov, ktoré spĺňajú určitú podmienku:

Spojenie

Ak stav 1 potom výsledok1

Keď wai2 potom výsledok2

. . .

Keď stav n potom výsledok n

Iné výsledky

Prevádzkovateľ prípadu kontroluje, či je podmienka1 pravdivá pre prvú položku v súbore definovanej operátorom, alebo v celom stole, ak nie je tam. Ak áno, prípad vráti hodnotu výsledku1. V opačnom prípade sa pre tento záznam skontroluje stav2. Ak je to pravda, hodnota výsledku2 sa vráti atď. Ak nie je vykonaná žiadna z podmienok, potom sa hodnota vráti.X. po kľúčovom kľúči slova iné.

Kľúčové slovo nie je povinné. Ak chýba a nie je vykonaná žiadna z podmienok, obsluha prípadu sa otáča null. Po spustení obsluhy obsluhy pre prvý záznam, prejde na nasledujúci záznam. Takže pokračuje, kým nebude spracovaný celý súbor záznamov.

Predpokladajme, že v tabuľke knižnej tabuľky (meno, cena), stĺpec je , ak nie je k dispozícii zodpovedajúca kniha. Nasledujúca požiadavka vráti tabuľku, v ktorej sa namiesto null nezobrazí text "Nie je k dispozícii":

Vyberte Názov

Spojenie

Keď je cena , potom "na sklade"

Inak obsadené (cena ako char (8))

Ako cena

Z kníh;

Všetky hodnoty toho istého stĺpca musia mať rovnaké typy. Preto tento dotaz používa funkciu konverzie typu odlievania, aby sa počet hodnôt stĺpcov. Cena na symbolický typ.

Upozorňujeme, že namiesto prvého formulára môže prevádzkovateľ prípadu vždy používať druhý:

Spojenie

Keď verzia_venue \u003d hodnota1 potom výsledok1

Keď verzia_vense \u003d hodnota2 potom výsledok2

. . .

Keď verzia_vense \u003d hodnotaN potom psetytn.

Elsetath

Funkcie nullif a koale

V niektorých prípadoch, najmä v požiadavkách na aktualizáciu údajov (prevádzkovateľ aktualizácie), je vhodné použiť viac kompaktných funkcií Nullif () (NULL, IF) a COALESCE () (NULL, IF) a COALESCE ().

Funkcia nullif ( význam1, hodnota2) Vracia null Ak hodnota prvého parametra zodpovedá hodnote druhého parametra, v prípade nezrovnalostí sa hodnota prvého parametra vráti nezmenený. To znamená, že ak sa vykoná hodnota rovnosti1 \u003d hodnota2, funkcia vráti , inak hodnotu hodnoty1.

Táto funkcia je ekvivalentná prevádzkovateľovi prípadu v nasledujúcich dvoch formách:

  • Hodnota prípadu1

Kedy odporúčame2 potom null

Inak hodnotu1

  • Spojenie

Keď hodnota1 \u003d hodnota2 potom null

Inak hodnotu1

Funkcia COALESCE ( hodnota1, hodnota2, ...,n hodnota n) prijíma zoznam hodnôt, ktoré môžu byť špecifické a neisté (null). Funkcia vráti špecifickú hodnotu zo zoznamu alebo , ak nie sú definované všetky hodnoty.

Táto funkcia je ekvivalentná nasledujúcim operátorom prípadu:

Spojenie

Keď hodnota 1 nie je , potom hodnota 1

Keď hodnota 2 nie je nulová, potom hodnota 2

. . .

Keď n nie je , potom hodnota n

Inak null.

Predpokladajme, že v tabuľke knižnej tabuľky (meno, cena), cenový stĺpec je , ak zodpovedajúca kniha nie je k dispozícii. Nasledujúca požiadavka vráti tabuľku, v ktorej namiesto tohoNULOVÝ Zobrazí sa text "nie je skladom":

Vyberte názov, Coatesce (Cast (cena ako CHAR (8)),

"Nie je k dispozícii") ako cena

Z kníh;

SQL - Lekcia 11. Celkové funkcie, vypočítané stĺpce a názory

Konečné funkcie sa nazývajú aj štatistické, agregátové alebo sčítanie. Tieto funkcie spracovávajú súbor riadkov na počítanie a vrátenie jednej hodnoty. Existuje len päť takýchto funkcií:
  • AVG () Funkcia vráti priemernú hodnotu stĺpca.

  • Počet () Funkcia vráti počet riadkov v stĺpci.

  • Max () Funkcia vráti najväčšiu hodnotu v stĺpci.

  • Min () Funkcia vráti najmenšiu hodnotu v stĺpci.

  • Suma () Funkcia vráti hodnotu hodnôt stĺpcov.

S jedným z nich - počet () - sme sa už stretli v lekcii 8. . Teraz sa zoznámte so zvyškom. Predpokladajme, že sme sa chceli naučiť minimálnu, maximálnu a priemernú cenu kníh v našom obchode. Potom z cenovej tabuľky (ceny) musí mať minimálnu, maximálnu a strednú hodnotu stĺpca. Požiadať jednoduché:

Vyberte min (cena), max (cena), AVG (cena) z cien;

Teraz chceme vedieť, koľko nám prinieslo poskytovateľ "tlačového domu" (ID \u003d 2). Urobte takúto žiadosť nie je tak jednoduché. Premýšľaj o tom, ako to urobiť:

1. Po prvé, musíte vybrať identifikátory (ID_inComing) týchto dodávok z dodávky (ID_inComing) (ID \u003d 2) z dodávok (ID \u003d 2):

2. Teraz z tabuľky protokolu dodávok (magazine_incoming), musíte si vybrať tovar (ID_product) a množstvo (množstvo), ktoré boli nájdené v dodávkach v odseku 1. To znamená, že žiadosť od odseku 1 sa stáva vloženým:

3. Teraz musíme pridať ceny do výslednej tabuľky pre nájdené produkty, ktoré sú uložené v cenovej tabuľke (ceny). To znamená, že budeme musieť spojiť tabuľky dodávok (magazine_incoming) a ceny (ceny) na stĺpci ID_product:

4. Výsledná tabuľka jasne chýba suma stĺpca, ktorá je vypočítaný stĺpec. Schopnosť vytvárať takýchto stĺpcov je uvedená v MySQL. Aby ste to urobili, stačí špecifikovať názov vypočítaného stĺpca v dotaze a to, čo musí vypočítať. V našom príklade sa tento stĺpec bude nazývať SUMMA, a to bude vypočítať, bude to produkt množstva stĺpcov a ceny. Názov nového stĺpca je oddelený slovom ako:

Vybrať časopis_incoming.id_product, magazine_incoming.id_product, ceny.Price, magazine_incoming.quantity * Ceny.Price ako Summa z Magazine_inComing, ceny, kde magazine_incoming.id_product \u003d ceny.id_products a id_inComing \u003d (vyberte ID_INCOMING z prichádzajúcej, kde ID_VENDOR \u003d 2);

5. Vynikajúce, máme len zhrnutie stĺpca Summa a nakoniec zistiť, akú sumu sme priniesli tovar dodávateľa "Dom tlačív". Syntax na použitie funkcie SUME ():

Zvoľte SUM (SHUBUSKE NÁZOV) Z NÁZVY_TABLE;

Vieme, že názov stĺpca - Summa, ale nemáme názov tabuľky, pretože je to výsledok dotazu. Čo robiť? Pre takéto prípady v MySQL sú zobrazenia. Zobrazenie je požiadavka na výber, ktorá je priradená jedinečný názov a ktorý je možné uložiť do databázy pre neskoršie použitie.

Syntax tvorby reprezentácie je nasledovná:

Vytvorenie názvu reprezentatívneho názvu ako dotaz;

Uložte našu požiadavku ako zobrazenie pomenované report_vendor:

Vytvorenie Zobraziť report_vendor as Select Magazine_inComing.id_product, Magazine_inComing.id_Product, ceny.Price, Magazine_inComing.quantity * Ceny.Price ako Summa od Magazine_inComing, ceny, kde Magazine_inComing.id_product \u003d ceny.id_products.id_inComing \u003d (vyberte ID_INCOMING z prichádzajúcej, kde ID_VENDOR \u003d 2 );

6. Teraz môžete použiť funkciu Celková suma ():

Vyberte SUM (SUMMA) z report_vendor;

Tak sme dosiahli výsledok, pravda, že sme museli použiť investované požiadavky, združenia, vypočítané stĺpce a prezentácie. Áno, niekedy získať výsledok, je potrebné bez neho myslieť kdekoľvek. Dotkovali sme sa však dve veľmi dôležité témy - vypočítané stĺpce a prezentácie. Hovorme o nich podrobnejšie.

Vypočítané polia (stĺpce)

Na príklade sme sa dnes pozreli na matematické vypočítané pole. Tu by som chcel dodať, že je možné používať nielen prevádzku multiplikácie (*), ale aj odčítania (-), a pridanie (+) a rozdelenie (/). Syntax je nasledovná:

Select_name_stolbet_1, _stolbet_name_2, _stolbet_name_1 * _NAME_22 AS_NAME_STOLBET_STOLBET_NAME_TABLE;

Druhým nuance je ako kľúčové slovo, použili sme ho na nastavenie názvu vypočítaného stĺpca. V skutočnosti, s pomocou tohto kľúčového slova, pseudonyms sú definované pre všetky stĺpce. Prečo to potrebujete? Znížiť a čítať kód. Naša reprezentácia môže napríklad vyzerať takto:

Vytvorenie Zobraziť report_vendor ASEX, B.Id_product, A.quantity, B.Price, A.Quantity * B.Price as Summa od Magazine_inComing ako A, ceny ako b kde A.id_product \u003d B.id_product a ID_INCOMING \u003d (vyberte ID_INCOMING Z PRÁKA Kde id_vendor \u003d 2);

Súhlasíte s tým, že je to oveľa kratšie a jasnejšie.

Zastúpenie

Syntax vytvárania zastúpení sa už uvažovala. Po vytvorení pohľady môžu byť použité rovnakým spôsobom ako tabuľky. To znamená, že vykonajte požiadavky na ne, filtrovať a triediť údaje, kombinovať niektoré názory s ostatnými. Na jednej strane je to veľmi pohodlný spôsob, ako uložiť komponenty komplexné dotazy (ako v našom príklade).

Treba však pripomenúť, že názory nie sú stôl, to znamená, že neuchovávajú údaje, ale ich extrahujú len z iných tabuliek. V prvom rade, keď sa zmenia údaje v tabuľkách, výsledky prezentácie sa tiež zmenia. A po druhé, pri žiadaní o pohľad sa nájde potrebné údaje, to znamená, že výkon DBMS klesá. Preto nie je potrebné ich zneužiť.

Funkcia súčtu v jazyku SQL, napriek svojej jednoduchosti, sa používa často často pri práci s databázou. S tým je vhodné získať niektoré medziprodukty alebo konečné výsledky, bez toho, aby sa uchýlili k pomoci pomocných nástrojov DBMS.

Funkcia syntaxe

Vo väčšine jazykov SQL je syntax suma rovnaká - iba názov poľa alebo nejaký aritmetický účinok niekoľkých z nich sa používa ako arithing, ktorý vyžaduje súčet.

Vo výnimočných prípadoch je možné prenášať konkrétnu hodnotu vo forme čísla alebo premennej, však také "schémy" sa prakticky nepoužívajú, pretože nenesú veľkú hodnotu. Nižšie je syntax funkcie SQL:

súčet (A) - tu ako parameter A použila určitú číselnú hodnotu alebo výraz

Stojí za zmienku, že pred parametrom môžete nastaviť kľúčové slová, napríklad odlišné alebo všetky, ktoré budú mať len jedinečné alebo všetky hodnoty.

Príklad použitia súčtu v SQL

Pre konečné pochopenie princípu prevádzky funkcie stojí za to zvážiť niekoľko príkladov. SQL Sum je možné použiť ako vrátil výsledok a úlohu medziľahlej hodnoty, napríklad na overenie stavu.

Pre prvý prípad zvážte možnosť, keď chcete vrátiť sumu predaja pre každý produkt, vzhľadom na to, že počet uskutočnených nákupov môže byť v množnom čísle. Ak chcete získať výsledok, stačí vykonať nasledujúci dotaz:

Vyberte produkt, súčet (celkom) z predaja GroupBy Tovar;

Odpoveď na tento príkaz bude jedinečným zoznamom produktov s konečnou nákupu pre každú z nich.

V druhom príklade je potrebné získať zoznam výrobkov, množstvo predaja, ktorým prekročil určitú hodnotu, napríklad 100. Je možné získať výsledok tejto úlohy niekoľkými spôsobmi, z toho najviac optimálnu je vykonanie jednej žiadosti:

Vyberte tovar z (vyberte produkt, súčet (celkom) ako množstvo z predaja), kde suma\u003e 100.

V tomto návode sa dozviete, ako používať MySQL funkcia súčtu so syntaxou a príkladmi.

Popis

MySQL funkcia Suma. Vracia celkovú hodnotu výrazu.

Syntax

Funkcie MySQL Syntax Sum:

Alebo MySQL Syntax Sum Functions pri zoskupení výsledkov pre jeden alebo viac stĺpcov:

Parametre alebo argumenty

expression1, expression2, ... expression_n - výrazy, ktoré nie sú zapuzdrené v súčtovej funkcii a musia byť zahrnuté do skupiny ponukou na konci operátora SQL.

aggregate_expression je stĺpec alebo výraz, ktorý bude zhrnutý.

tabuľky - tabuľky, z ktorých chcete prijímať záznamy. Tam musí byť aspoň jedna tabuľka uvedená v danej doložke.

Kde podmienky - nepovinné. Toto sú podmienky, ktoré musia byť vyplnené pre vybrané položky.

Žiadosť

Funkcia súčtu môže byť použitá v nasledujúcich verziách MySQL:

  • MySQL 5.7, MYSQL 5.6, MYSQL 5.5, MYSQL 5.1, MYSQL 5.0, MYSQL 4.1, MYSQL 4.0, MYSQL 3.23

Príklad s jedným výrazom

Zvážte príklady MySQL funkcií súčtu, aby ste pochopili, ako používať funkciu sumy v MySQL.

Napríklad, musíte zistiť, čo kumulatívny celkový plat všetkých zamestnancov, ktorých platu presahuje 20 000 USD ročne.

V tomto príklade je funkcia sumy, vyjadrenie súčtu (plat) bola pridelená Pseudonym "Celkový plat". Výsledkom je, že pri návrate sady výsledkov sa ako názov poľa zobrazí celkový plat.

Príklad s použitím odlišného

V funkcii súčtu môžete použiť odlišnú ponuku. Napríklad výpis SQL sa vráti kombinovaný celkový plat s jedinečnými mzdami, kde je plat vyšší ako 20 000 USD ročne.

Ak dvaja plat bol 10 000 dolárov ročne, iba jedna z týchto hodnôt by sa použila v súčtovej funkcii.

Príklad použitím vzorca

Výraz obsiahnutý v funkcii súčtu nemusí byť jedným z poli. Môžete tiež použiť vzorca. Môžete napríklad vypočítať všeobecnú komisiu.

MySQL

Vyberte SUM (SALES * 0,05) ako "Úplná komisia" z objednávok;

Vyberte SUM (predaj * 0,05) ako "Úplná komisia"

Z objednávok;

Príklad pomocou skupiny podľa

V niektorých prípadoch budete musieť použiť skupinu pomocou funkcie sumou.

Môžete napríklad použiť funkciu sumy na vrátenie oddelenia a celkovej sumy predaja (predaja na príslušnom oddelení).



Páči sa vám článok? Zdieľaj to