Sql suma s podmienkou. SQL agregačné funkcie - SUM, MIN, MAX, AVG, COUNT. Parametre alebo argumenty

Ako zistím počet modelov PC vyrobených konkrétnym dodávateľom? Ako určiť priemernú cenu počítačov, ktoré majú to isté technické údaje? Na tieto a mnohé ďalšie otázky súvisiace s niektorými štatistickými informáciami možno odpovedať pomocou konečné (agregované) funkcie. Norma poskytuje nasledujúce agregačné funkcie:

Všetky tieto funkcie vracajú jednu hodnotu. Zároveň funkcie COUNT, MIN A MAX použiteľné pre akýkoľvek typ údajov, pričom SUM A AVG sa používajú iba pre číselné polia. Rozdiel medzi funkciami COUNT(*) A COUNT(<имя поля>) je, že druhý neberie pri výpočte do úvahy hodnoty NULL.

Príklad. Nájdite minimálnu a maximálnu cenu osobných počítačov:

Príklad. Nájdite dostupný počet počítačov vyrobených výrobcom A:

Príklad. Ak nás zaujíma počet rôznych modelov vyrobených výrobcom A, potom môže byť dotaz formulovaný nasledovne (s využitím skutočnosti, že v tabuľke Produkt je každý model zaznamenaný raz):

Príklad. Zistite počet dostupných rôznych modelov vyrobených výrobcom A. Dotaz je podobný predchádzajúcemu, v ktorom bolo potrebné určiť celkový počet modelov vyrobených výrobcom A. Tu je tiež potrebné zistiť počet rôznych modelov v PC stolík (t. j. tie, ktoré sú dostupné na predaj).

Aby sa zabezpečilo, že pri získavaní štatistických ukazovateľov sa použijú iba jedinečné hodnoty argument agregovaných funkcií môže byť použité DISTINCT parameter. Ďalší parameter ALL je predvolená hodnota a predpokladá, že sa spočítajú všetky vrátené hodnoty v stĺpci. operátor,

Ak potrebujeme získať počet vyrobených modelov PC každý výrobcu, budete musieť použiť klauzula GROUP BY, syntakticky nasleduje klauzuly WHERE.

klauzula GROUP BY

klauzula GROUP BY používa sa na definovanie skupín výstupných riadkov, na ktoré možno použiť súhrnné funkcie (COUNT, MIN, MAX, AVG a SUM). Ak táto klauzula chýba a sú použité agregačné funkcie, potom všetky stĺpce s názvami uvedenými v VYBRAŤ, by mali byť zahrnuté v agregované funkcie a tieto funkcie sa použijú na celú množinu riadkov, ktoré spĺňajú predikát dotazu. V opačnom prípade všetky stĺpce zoznamu SELECT nezahŕňa v agregovaných funkciách musia byť špecifikované v klauzule GROUP BY. Výsledkom je, že všetky riadky výstupných dotazov sú rozdelené do skupín charakterizovaných rovnakými kombináciami hodnôt v týchto stĺpcoch. Potom budú agregované funkcie aplikované na každú skupinu. Upozorňujeme, že pre GROUP BY sa všetky hodnoty NULL považujú za rovnaké, t.j. pri zoskupení podľa poľa obsahujúceho hodnoty NULL budú všetky takéto riadky spadať do jednej skupiny.
Ak ak existuje klauzula GROUP BY, v klauzule SELECT žiadne agregované funkcie, potom dotaz jednoducho vráti jeden riadok z každej skupiny. Túto funkciu spolu s kľúčovým slovom DISTINCT možno použiť na odstránenie duplicitných riadkov v množine výsledkov.
Pozrime sa na jednoduchý príklad:
SELECT model, COUNT(model) AS Množstvo_model, AVG(cena) AS Priemerná_cena
Z PC
GROUP BY model;

V tejto žiadosti je pre každý model PC určený ich počet a priemerná cena. Všetky riadky s rovnakou hodnotou modelu tvoria skupinu a výstup SELECT vypočíta počet hodnôt a priemerné hodnoty cien pre každú skupinu. Výsledkom dotazu bude nasledujúca tabuľka:
Model Model_množstva Priemerná_cena
1121 3 850.0
1232 4 425.0
1233 3 843.33333333333337
1260 1 350.0

Ak by mal SELECT stĺpec dátum, potom by bolo možné vypočítať tieto ukazovatele pre každý konkrétny dátum. Ak to chcete urobiť, musíte pridať dátum ako stĺpec zoskupenia a potom by sa agregované funkcie vypočítali pre každú kombináciu hodnôt (dátum modelu).

Špecifických je viacero pravidlá pre vykonávanie agregovaných funkcií:

  • Ak v dôsledku žiadosti neboli prijaté žiadne riadky(alebo viac ako jeden riadok pre danú skupinu), potom neexistujú žiadne zdrojové údaje na výpočet žiadnej zo súhrnných funkcií. V tomto prípade bude výsledok funkcií COUNT nula a výsledok všetkých ostatných funkcií bude NULL.
  • Argumentovať agregátna funkcia nemôže obsahovať agregované funkcie(funkcia z funkcie). Tie. v jednom dotaze je povedzme nemožné získať maximum priemerných hodnôt.
  • Výsledkom vykonania funkcie COUNT je celé číslo(INTEGER). Ostatné agregačné funkcie dedia dátové typy hodnôt, ktoré spracúvajú.
  • Ak funkcia SUM vytvorí výsledok, ktorý je väčší ako maximálna hodnota použitého typu údajov, chyba.

Ak teda žiadosť neobsahuje klauzuly GROUP BY, To agregované funkcie zahrnuté v klauzula SELECT, sa vykonajú vo všetkých výsledných riadkoch dotazu. Ak žiadosť obsahuje klauzula GROUP BY, každá sada riadkov, ktorá má rovnaké hodnoty stĺpca alebo skupiny stĺpcov špecifikovaných v klauzula GROUP BY, tvorí skupinu a agregované funkcie sa vykonávajú pre každú skupinu samostatne.

MÁME ponuku

Ak klauzula WHERE potom definuje predikát na filtrovanie riadkov MÁME ponuku platí po zoskupení na definovanie podobného predikátu, ktorý filtruje skupiny podľa hodnôt agregované funkcie. Táto klauzula je potrebná na overenie hodnôt, ktoré sa získajú pomocou agregátna funkcia nie z jednotlivých riadkov zdroja záznamov definovaných v doložka FROM, a od skupiny takýchto liniek. Preto takáto kontrola nemôže byť obsiahnutá klauzula WHERE.

Funkcia SUM v jazyku SQL je napriek svojej jednoduchosti využívaná pomerne často pri práci s databázou. S jeho pomocou je vhodné získať nejaké priebežné alebo konečné výsledky bez použitia pomocných nástrojov DBMS.

Syntax funkcie

Vo väčšine SQL jazyky syntax súčtu je rovnaká - ako argument je použitý len názov poľa alebo nejaká aritmetická operácia viacerých z nich, nad ktorými sa vyžaduje súčet.

Vo výnimočných prípadoch je možné prenášať konkrétnu hodnotu ako číslo alebo premennú, ale takéto „schémy“ sa prakticky nepoužívajú, pretože nemajú veľkú hodnotu. Nižšie je uvedená syntax funkcie v SQL:

sum(a) - tu sa ako parameter a použije nejaká číselná hodnota alebo výraz

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

Príklad použitia SUM v SQL

Aby sme plne pochopili, ako funkcia funguje, stojí za to zvážiť niekoľko príkladov. V SQL možno použiť SUM ako návratový výsledok aj ako medzihodnotu, napríklad na testovanie podmienky.

V prvom prípade zvážte možnosť, keď potrebujete vrátiť sumu predaja za každý produkt, berúc do úvahy, že počet uskutočnených nákupov môže byť v množnom čísle. Na získanie výsledku bude stačiť spustiť nasledujúci dotaz:

SELECT Product, sum(PurchaseAmount) FROM Sales GroupBy Product;

V reakcii na tento príkaz pri každom z nich bude jedinečný zoznam produktov s celkovou sumou nákupu.

Pre druhý príklad musíte získať zoznam produktov, ktorých objem predaja prekročil určitú hodnotu, napríklad 100. Výsledok pre túto úlohu môžete získať niekoľkými spôsobmi, z ktorých najoptimálnejšie je vykonať jednu požiadavku:

SELECT Product FROM (SELECT Product, sum(Purchase Amount) as Amount FROM Sales) WHERE Sum > 100.

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

Celkové funkcie sa tiež nazývajú štatistické, agregované alebo súčtové funkcie. Tieto funkcie spracovávajú množinu reťazcov, aby spočítali a vrátili jednu hodnotu. Existuje iba päť takýchto funkcií:
  • Funkcia AVG() vracia priemernú hodnotu stĺpca.

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

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

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

  • SUM() Funkcia vráti súčet hodnôt stĺpca.

S jedným z nich - COUNT() - sme sa už stretli v lekcii 8. Teraz sa zoznámime s ostatnými. Povedzme, že sme chceli vedieť minimálnu, maximálnu a priemernú cenu kníh v našom obchode. Potom z tabuľky cien musíte zobrať minimálne, maximálne a priemerné hodnoty pre cenový stĺpec. Požiadavka je jednoduchá:

VYBERTE MIN(cena), MAX(cena), AVG(cena) FROM cien;

Teraz chceme zistiť, za koľko nám tovar doviezol dodávateľ "House of Printing" (id=2). Podanie takejto žiadosti nie je také jednoduché. Zamyslime sa nad tým, ako ho zostaviť:

1. Najprv z tabuľky Dodávky (prichádzajúce) vyberte identifikátory (id_incoming) tých dodávok, ktoré realizoval dodávateľ „Tlačiareň“ (id=2):

2. Teraz z tabuľky Supply Journal (magazine_incoming) je potrebné vybrať tovar (id_product) a jeho množstvá (množstvo), ktoré boli realizované v dodávkach nájdených v bode 1. To znamená, že dotaz z bodu 1 sa stane vnoreným:

3. Teraz potrebujeme do výslednej tabuľky doplniť ceny za nájdené produkty, ktoré sú uložené v tabuľke Ceny. To znamená, že sa budeme musieť pripojiť k tabuľkám Supply Magazine (magazine_incoming) a Ceny pomocou stĺpca id_product:

4. Vo výslednej tabuľke jednoznačne chýba stĺpec Suma, tzn vypočítaný stĺpec. Schopnosť vytvárať takéto stĺpce poskytuje MySQL. Na to stačí zadať v dotaze názov vypočítaného stĺpca a čo má vypočítať. V našom príklade sa takýto stĺpec bude nazývať summa a vypočíta súčin stĺpcov množstva a ceny. Názov nového stĺpca je oddelený slovom AS:

SELECT casopis_prichadzajuci.id_produkt, casopis_prichadzajuce.množstvo, ceny.cena, casopis_prichadzajuce.množstvo*ceny.cena AS summa FROM casopis_prichod, ceny WHERE casopis_prichod.id_produkt= ceny.id_produkt AND id_prichadzajuce= (SELECT id_prichadzajuce FROM prichadzajuce WHERE id_);

5. Super, už nám ostáva len zrátať stĺpec summa a nakoniec zistiť, za koľko nám dodávateľ “House of Printing” tovar priniesol. Syntax na použitie funkcie SUM() je nasledovná:

SELECT SUM(názov_stĺpca) FROM názov_tabuľky;

Poznáme názov stĺpca - summa, ale nemáme názov tabuľky, keďže je výsledkom dotazu. Čo robiť? Pre takéto prípady má MySQL Views. Pohľad je výberový dotaz, ktorý má jedinečný názov a možno ho uložiť do databázy na neskoršie použitie.

Syntax na vytvorenie zobrazenia je nasledovná:

CREATE VIEW view_name AS žiadosť;

Uložme našu požiadavku ako zobrazenie s názvom report_vendor:

CREATE VIEW report_vendor AS SELECT magazine_incoming.id_product, magazine_incoming.quantity, prices.price, magazine_incoming.quantity*prices.price AS summa FROM magazine_incoming, prices WHERE magazine_incoming.id_product= prices.id_product AND id_incoming= (SELECT id_incoming WREing );

6. Teraz môžete použiť konečnú funkciu SUM():

SELECT SUM(summa) FROM report_vendor;

Takže sme dosiahli výsledok, aj keď sme na to museli použiť vnorené dotazy, spojenia, vypočítané stĺpce a zobrazenia. Áno, niekedy musíte premýšľať, aby ste dosiahli výsledok, bez toho sa nikam nedostanete. Dotkli sme sa ale dvoch veľmi dôležitých tém – vypočítaných stĺpcov a zobrazení. Povedzme si o nich podrobnejšie.

Vypočítané polia (stĺpce)

Na príklade sme sa dnes pozreli na matematické vypočítané pole. Tu by som rád dodal, že môžete použiť nielen operáciu násobenia (*), ale aj odčítanie (-), sčítanie (+) a delenie (/). Syntax je nasledovná:

SELECT názov_stĺpca 1, názov_stĺpca 2, názov_stĺpca 1 * názov_stĺpca 2 AS názov vypočítaného_stĺpca FROM názov_tabuľky;

Druhou nuansou je kľúčové slovo AS, pomocou neho sme nastavili názov počítaného stĺpca. V skutočnosti sa toto kľúčové slovo používa na nastavenie aliasov pre ľubovoľné stĺpce. Prečo je to potrebné? Pre redukciu kódu a čitateľnosť. Náš pohľad môže vyzerať napríklad takto:

CREATE VIEW report_vendor AS SELECT A.id_product, A.quantity, B.price, A.quantity*B.price AS summa FROM magazine_incoming AS A, prices AS B WHERE A.id_product= B.id_product AND id_incoming= (SELECT id_incoming FROM incoming WHERE id_vendor=2);

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

zastupovanie

Už sme sa pozreli na syntax vytvárania pohľadov. Po vytvorení pohľadov ich možno použiť rovnakým spôsobom ako tabuľky. To znamená, že proti nim spúšťajte dotazy, filtrujte a triedite údaje a kombinujte niektoré zobrazenia s inými. Na jednej strane je to veľmi pohodlný spôsob skladovania často používaných zložité otázky(ako v našom príklade).

Pamätajte však, že zobrazenia nie sú tabuľky, to znamená, že neukladajú údaje, ale iba ich získavajú z iných tabuliek. Po prvé, keď sa zmenia údaje v tabuľkách, zmenia sa aj výsledky prezentácie. A po druhé, keď sa požiada o zobrazenie, požadované údaje sa vyhľadajú, to znamená, že výkon DBMS sa zníži. Preto by ste ich nemali zneužívať.

V tom učebnica naučíte sa používať Funkcia SUM V SQL Server(Transact-SQL) so syntaxou a príkladmi.

Popis

V SQL Server (Transact-SQL) Funkcia SUM vráti celkovú hodnotu výrazu.

Syntax

Syntax pre funkciu SUM v SQL Server (Transact-SQL) je:

ALEBO syntax funkcie SUM pri zoskupovaní výsledkov podľa jedného alebo viacerých stĺpcov je:

Parametre alebo argumenty

výraz1 , výraz2 , ... výraz_n sú výrazy, ktoré nie sú zahrnuté vo funkcii SUM a musia byť zahrnuté v klauzule GROUP BY na konci príkazu SQL.
agregovaný_výraz je stĺpec alebo výraz, ktorý bude agregovaný.
tabuľky - tabuľky, z ktorých chcete získať záznamy. V klauzule FROM musí byť uvedená aspoň jedna tabuľka.
WHERE podmienky - voliteľné. Toto sú podmienky, ktoré musia byť splnené pre vybrané záznamy.

Aplikácia

Funkciu SUM je možné použiť v nasledujúcich verziách SQL Server (Transact-SQL):
SQL Server vNext, SQL Server 2016, SQL Server 2015, SQL Server 2014, SQL Server 2012, SQL Server 2008 R2, SQL Server 2008, SQL Server 2005

Príklad s jedným poľom

Pozrime sa na niektoré príklady funkcií SQL Server SUM, aby sme pochopili, ako používať funkciu SUM v SQL Server (Transact-SQL).

Môžete napríklad zistiť celkové množstvo všetkých produktov, ktorých množstvo je väčšie ako 10.

V tomto príklade funkcie SUM sme aliasovali výraz SUM(množstvo) „Celkové množstvo“. Pri vrátení sady výsledkov sa ako názov poľa zobrazí „Celkové množstvo“.

Príklad použitia DISTINCT

Vo funkcii SUM môžete použiť operátor DISTINCT. Napríklad ten nižšie SQL príkaz vráti celkový plat s jedinečnými hodnotami platu, kde je plat nižší ako 29 000 dolárov ročne.

Ak by tieto dva platy boli 24 000 dolárov ročne, vo funkcii SUM by sa použila iba jedna z týchto hodnôt.

Príklad použitia vzorca

Výraz obsiahnutý vo funkcii SUM nemusí byť jedno pole. Môžete použiť aj vzorec. Môžete si napríklad vypočítať celkovú províziu.

Transact-SQL

VYBERTE SUM (predaj * 0,03) AKO "Celkovú províziu" Z objednávok;

VYBERTE SUM (predaj * 0,03 ) AKO "Celková provízia"

Z objednávok;

Príklad použitia GROUP BY

V niektorých prípadoch budete musieť použiť operátor GROUP BY s funkciou SUM.

Naučme sa sumarizovať. Nie, toto nie sú výsledky štúdia SQL, ale výsledky hodnôt stĺpcov databázových tabuliek. Agregačné funkcie SQL pracujú s hodnotami stĺpca a vytvárajú jednu výslednú hodnotu. Najčastejšie používané agregačné funkcie SQL sú SUM, MIN, MAX, AVG a COUNT. Je potrebné rozlišovať dva prípady použitia agregovaných funkcií. Po prvé, súhrnné funkcie sa používajú samostatne a vracajú jedinú výslednú hodnotu. Po druhé, agregačné funkcie sa používajú s klauzulou SQL GROUP BY, to znamená zoskupovanie podľa polí (stĺpcov), aby sa získali výsledné hodnoty v každej skupine. Najprv zvážme prípady použitia agregačných funkcií bez zoskupovania.

Funkcia SQL SUM

Funkcia SQL SUM vracia súčet hodnôt v stĺpci databázovej tabuľky. Dá sa použiť iba na stĺpce, ktorých hodnoty sú čísla. SQL dotazy aby výsledný súčet začal takto:

SELECT SUM (COLUMN_NAME)...

Za týmto výrazom nasleduje FROM (TABLE_NAME) a ​​potom je možné zadať podmienku pomocou klauzuly WHERE. Okrem toho môže pred názvom stĺpca predchádzať DISTINCT, čo znamená, že iba jedinečné hodnoty. V predvolenom nastavení sa berú do úvahy všetky hodnoty (na tento účel môžete konkrétne určiť nie DISTINCT, ale ALL, ale slovo ALL sa nevyžaduje).

Ak chcete spúšťať databázové dotazy z tejto lekcie na MS SQL Server, ale tento DBMS nie je nainštalovaný na vašom počítači, môžete ho nainštalovať pomocou pokynov na tomto odkaze .

Najprv budeme pracovať s databázou firmy – Firma1. Skript na vytvorenie tejto databázy, jej tabuliek a naplnenie tabuliek údajmi je v súbore na tomto odkaze .

Príklad 1 Existuje firemná databáza s údajmi o jej divíziách a zamestnancoch. V tabuľke Zamestnanci sa nachádza aj stĺpec s údajmi o mzdách zamestnancov. Výber z tabuľky vyzerá takto (ak chcete obrázok zväčšiť, kliknite naň ľavým tlačidlom myši):

Na získanie súčtu všetkých miezd použijeme nasledujúci dotaz (na MS SQL Server - s predchádzajúcou stavbou USE company1;):

VYBERTE SI SUM (Plat) OD zamestnancov

Tento dotaz vráti hodnotu 287664,63.

A teraz . V cvičeniach už začíname úlohy komplikovať a približovať ich tým, s ktorými sa stretávame v praxi.

Funkcia SQL MIN

Funkcia SQL MIN funguje aj so stĺpcami, ktorých hodnoty sú čísla a vracia minimum zo všetkých hodnôt v stĺpci. Táto funkcia má podobnú syntax ako funkcia SUM.

Príklad 3 Databáza a tabuľka sú rovnaké ako v príklade 1.

Treba vedieť minimum mzdy zamestnanci oddelenia s číslom 42. Za týmto účelom napíšte nasledujúci dotaz (na MS SQL Server - s predchádzajúcou konštrukciou USE company1;):

Dopyt vráti hodnotu 10505,90.

A znova cvičenie pre nezávislé rozhodnutie . V tomto a niektorých ďalších cvičeniach budete potrebovať nielen tabuľku Zamestnanci, ale aj tabuľku Org, ktorá obsahuje údaje o divíziách spoločnosti:


Príklad 4. Do tabuľky Zamestnanci sa pridá tabuľka Org, ktorá obsahuje údaje o oddeleniach spoločnosti. Vytlačte minimálny počet rokov odpracovaných jedným zamestnancom v oddelení v Bostone.

Funkcia SQL MAX

Funkcia SQL MAX funguje podobne a má podobnú syntax, ktorá sa používa, keď potrebujete určiť maximálnu hodnotu medzi všetkými hodnotami v stĺpci.

Príklad 5.

Potrebujeme zistiť maximálny plat zamestnancov v oddelení číslo 42. Za týmto účelom napíšte nasledujúci dotaz (na MS SQL Server - s predponou USE company1;):

Dopyt vráti hodnotu 18352,80

Je čas cvičenia na samostatné riešenie.

Príklad 6. Opäť pracujeme s dvomi tabuľkami – Staff a Org. Zobrazte názov oddelenia a maximálnu hodnotu provízie, ktorú dostane jeden zamestnanec na oddelení patriacom do skupiny oddelení (Divízia) Východ. Použite JOIN (pripojenie k stolom) .

Funkcia SQL AVG

To, čo je uvedené v súvislosti so syntaxou pre predchádzajúce opísané funkcie, platí aj pre funkciu SQL AVG. Táto funkcia vráti priemer všetkých hodnôt v stĺpci.

Príklad 7. Databáza a tabuľka sú rovnaké ako v predchádzajúcich príkladoch.

Povedzme, že chcete zistiť priemernú dĺžku služby zamestnancov v oddelení číslo 42. Za týmto účelom napíšte nasledujúci dotaz (na MS SQL Server - s predchádzajúcou konštrukciou USE company1;):

Výsledok bude 6,33

Príklad 8. Pracujeme s jedným stolom – Staff. Zobrazte priemernú mzdu zamestnancov s praxou 4 až 6 rokov.

Funkcia SQL COUNT

Funkcia SQL COUNT vráti počet záznamov v databázovej tabuľke. Ak v dotaze zadáte SELECT COUNT(COLUMN_NAME) ..., výsledkom bude počet záznamov bez zohľadnenia tých záznamov, v ktorých je hodnota stĺpca NULL (nedefinovaná). Ak ako argument použijete hviezdičku a spustíte dotaz SELECT COUNT(*) ..., výsledkom bude počet všetkých záznamov (riadkov) tabuľky.

Príklad 9. Databáza a tabuľka sú rovnaké ako v predchádzajúcich príkladoch.

Chcete vedieť počet všetkých zamestnancov, ktorí dostávajú provízie. Počet zamestnancov, ktorých hodnoty stĺpca Comm nie sú NULL, vráti nasledujúci dotaz (na MS SQL Server - s predponou USE company1;):

VYBERTE POČET (Komunikácia) OD personálu

Výsledkom bude 11.

Príklad 10. Databáza a tabuľka sú rovnaké ako v predchádzajúcich príkladoch.

Ak chcete zistiť celkový počet záznamov v tabuľke, použite dotaz s hviezdičkou ako argument funkcie COUNT (na MS SQL Server - s predchádzajúcou konštrukciou USE company1;):

VYBERTE POČET (*) OD personálu

Výsledkom bude 17.

V ďalšom cvičenie na samostatné riešenie budete musieť použiť poddotaz.

Príklad 11. Pracujeme s jedným stolom – Staff. Zobrazte počet zamestnancov v oddelení plánovania (Plains).

Agregačné funkcie s SQL GROUP BY

Teraz sa pozrime na používanie agregačných funkcií spolu s príkazom SQL GROUP BY. Príkaz SQL GROUP BY sa používa na zoskupenie výsledkových hodnôt podľa stĺpcov v databázovej tabuľke. Web má lekciu venovanú osobitne tomuto operátorovi .

Budeme pracovať s databázou „Ads Portal 1“. Skript na vytvorenie tejto databázy, jej tabuľky a naplnenie tabuľky údajov je v súbore na tomto odkaze .

Príklad 12. Existuje teda databáza inzertného portálu. Obsahuje tabuľku reklám s údajmi o reklamách odoslaných za daný týždeň. Stĺpec Kategória obsahuje údaje o veľkých kategóriách inzerátov (napríklad Nehnuteľnosti) a Stĺpec Časti obsahuje údaje o menších častiach zaradených do kategórií (napríklad časti Apartmány a Letné domy sú súčasťou kategórie Nehnuteľnosti). V stĺpci Jednotky sú údaje o počte podaných inzerátov a v stĺpci Peniaze sú údaje o sume prijatej za podanie inzerátu.

KategóriaČasťJednotkyPeniaze
DopravaAutá110 17600
NehnuteľnosťApartmány89 18690
NehnuteľnosťDače57 11970
DopravaMotocykle131 20960
Konštrukčné materiálydosky68 7140
Elektrotechnikatelevízory127 8255
ElektrotechnikaChladničky137 8905
Konštrukčné materiályRegips112 11760
Voľný časknihy96 6240
NehnuteľnosťDoma47 9870
Voľný časHudba117 7605
Voľný časHry41 2665

Pomocou príkazu SQL GROUP BY nájdite množstvo peňazí zarobených uverejňovaním reklám v každej kategórii. Napíšeme nasledujúci dotaz (na MS SQL Server - s predchádzajúcou konštrukciou USE adportal1;):

VYBERTE kategóriu, SÚČET (Peniaze) AKO PENIAZE Z REKLAMNEJ SKUPINY PODĽA kategórie

Príklad 13. Databáza a tabuľka sú rovnaké ako v predchádzajúcom príklade.

Pomocou príkazu SQL GROUP BY zistite, ktorá časť každej kategórie mala najviac výpisov. Napíšeme nasledujúci dotaz (na MS SQL Server - s predchádzajúcou konštrukciou USE adportal1;):

VYBERTE kategóriu, časť, MAX (jednotky) AKO maximum Z REKLAMNEJ SKUPINY PODĽA kategórie

Výsledkom bude nasledujúca tabuľka:

Celkové a jednotlivé hodnoty je možné získať v jednej tabuľke kombinovanie výsledkov dotazu pomocou operátora UNION .

Relačné databázy a jazyk SQL




Hore