Kontakty

Spočítajte počet záznamov v skupinách (vytvorených GROUP BY). Výpočty v sql Vypočítajte počet id s konkrétnou hodnotou

Popisuje použitie aritmetických operátorov a konštrukciu vypočítaných stĺpcov. Zohľadňujú sa súhrnné (agregačné) funkcie COUNT, SUM, AVG, MAX, MIN. Je uvedený príklad použitia klauzuly GROUP BY na zoskupovanie v dotazoch na výber údajov. Opisuje použitie klauzuly HAVING.

Vytváranie vypočítaných polí

Vo všeobecnosti vytvárať vypočítané (odvodené) pole nejaký výraz by mal byť špecifikovaný v zozname SELECT jazyk SQL... Tieto výrazy používajú aritmetiku sčítania, odčítania, násobenia a delenia a vstavané funkcie SQL. Môžete zadať názov ľubovoľného stĺpca (pola) tabuľky alebo dotazu, ale použite iba názov stĺpca tejto tabuľky alebo dotazu, ktorý je uvedený v klauzule FROM príslušného príkazu. Pri vytváraní zložitých výrazov môžu byť potrebné zátvorky.

Štandardy SQL vám umožňujú explicitne špecifikovať názvy stĺpcov výsledkovej tabuľky pomocou klauzuly AS.

SELECT Product.Name, Product.Price, Deal. Quantity, Product.Price * Deal. Quantity AS Cost of Product INNER JOIN Deal ON Product.Product Code = Deal.Product Code Príklad 6.1. Výpočet celkových nákladov na každú transakciu.

Príklad 6.2. Získajte zoznam spoločností s menami a iniciálami klientov.

SELECT Firma, Priezvisko + "" + Left (Krstné meno, 1) + "." + Left (Stredné meno, 1) + "." AS Celé meno FROM Client Príklad 6.2. Získanie zoznamu firiem s uvedením priezviska a iniciál klientov.

Dotaz využíva vstavanú funkciu Left, ktorá umožňuje v tomto prípade vystrihnúť jeden znak zľava v textovej premennej.

Príklad 6.3. Získajte zoznam produktov s rokom a mesiacom predaja.

VYBERTE názov položky, rok (dátum.obchodu) AKO rok, mesiac (dátum.obchodu) AKO mesiac OD položky VNÚTORNÉ PRIPOJENIE k dohode ON Item.Product Code = Deal.Product Code Príklad 6.3. Prijatie zoznamu produktov s uvedením roku a mesiaca predaja.

Dotaz používa vstavané funkcie Year a Month na extrahovanie roka a mesiaca z dátumu.

Používanie súhrnných funkcií

Cez súhrnné (súhrnné) funkcie v rámci SQL dotazu môžete získať množstvo súhrnných štatistík o množine vybraných hodnôt výstupnej množiny.

Používateľovi sú k dispozícii nasledujúce hlavné. súhrnné funkcie:

  • Počet (výraz) - určuje počet záznamov vo výstupnej sade SQL dotazu;
  • Min / Max (Výraz) - určte najmenšiu a najväčšiu z množiny hodnôt v určitom poli požiadavky;
  • Avg (Expression) - Táto funkcia vám umožňuje vypočítať priemer množiny hodnôt uložených v konkrétnom poli záznamov vybraných dotazom. Je to aritmetický priemer, t.j. súčet hodnôt vydelený ich počtom.
  • Súčet (výraz) - vypočíta súčet množiny hodnôt obsiahnutých v konkrétnom poli záznamov vybratých dotazom.

Ako výrazy sa najčastejšie používajú názvy stĺpcov. Výraz je možné vypočítať aj pomocou hodnôt niekoľkých tabuliek.

Všetky tieto funkcie pracujú s hodnotami v jednom stĺpci tabuľky alebo s aritmetickým výrazom a vracajú jednu hodnotu. Funkcie COUNT, MIN a MAX sa vzťahujú na numerické aj nenumerické polia, zatiaľ čo funkcie SUM a AVG možno použiť iba v prípade numerických polí, s výnimkou COUNT (*). Pri výpočte výsledkov akýchkoľvek funkcií sa najskôr vylúčia všetky prázdne hodnoty, po ktorých sa požadovaná operácia použije iba na zostávajúce špecifické hodnoty stĺpcov. Variant COUNT (*) je špeciálny prípad použitia funkcie COUNT, jej účelom je spočítať všetky riadky vo výslednej tabuľke bez ohľadu na to, či obsahuje prázdne, duplicitné alebo akékoľvek iné hodnoty.

Ak potrebujete pred použitím generickej funkcie odstrániť duplicitné hodnoty, mali by ste pred názvom stĺpca v definícii funkcie uviesť kľúčové slovo ODLIŠNÝ. Pre funkcie MIN a MAX to nedáva zmysel, ale jeho použitie môže ovplyvniť výsledky vykonávania. funkcie SUM a AVG, preto treba vopred zvážiť, či má byť v každom prípade prítomná. Okrem toho kľúčové slovo DISTINCT možno zadať maximálne raz v ľubovoľnom dopyte.

Je veľmi dôležité poznamenať, že súhrnné funkcie možno použiť iba v zozname klauzuly SELECT a ako súčasť klauzuly HAVING. Vo všetkých ostatných prípadoch je to neprijateľné. Ak zoznam v klauzule SELECT obsahuje súhrnné funkcie a text dopytu neobsahuje klauzulu GROUP BY, ktorá zabezpečuje spojenie údajov do skupín, potom žiadny z prvkov zoznamu klauzuly SELECT nemôže obsahovať žiadne odkazy na polia, okrem situácie, keď polia fungujú ako argumenty súhrnné funkcie.

Príklad 6.4. Určite prvý abecedný názov produktu.

SELECT Min (Názov položky) AS Min_Name FROM Item Príklad 6.4. Určenie prvého abecedného názvu produktu.

Príklad 6.5. Určite počet transakcií.

SELECT Počet (*) AS Počet_ obchodov FROM Obchod Príklad 6.5. Určite počet transakcií.

Príklad 6.6. Určte celkové množstvo predaného tovaru.

SELECT Sum (Deal.Quantity) AS Item_Quantity FROM Deal Príklad 6.6. Stanovenie celkového množstva predaného tovaru.

Príklad 6.7. Určte priemernú cenu predaného tovaru.

SELECT Avg (Item.Price) AS Avg_Price FROM Item INNER JOIN Deal ON Item.Product Code = Deal.Product Code; Príklad 6.7. Stanovenie priemernej ceny predávaného tovaru.

VYBERTE súčet (Cena položky * Množstvo ponuky) AKO CENA Z položky VNÚTORNÉ PRIPOJENIE K dohode NA Kód položky. Kód produktu = Kód ponuky. Príklad 6.8. Výpočet celkových nákladov na predaný tovar.

klauzula GROUP BY

Dopyty často vyžadujú medzisúčty, čo je zvyčajne indikované výskytom frázy „pre každého ...“ v dopyte. Na tento účel sa v príkaze SELECT používa klauzula GROUP BY. Dotaz, ktorý obsahuje GROUP BY, sa nazýva zoskupovací dotaz, pretože zoskupuje údaje vyplývajúce z operácie SELECT a potom vytvára jeden súhrnný riadok pre každú jednotlivú skupinu. Štandard SQL vyžaduje, aby klauzula SELECT a klauzula GROUP BY spolu úzko súviseli. S klauzulou GROUP BY v príkaze SELECT musí mať každá položka zoznamu v klauzule SELECT jednu hodnotu pre celú skupinu. Okrem toho môže klauzula SELECT obsahovať iba nasledujúce typy prvkov: názvy polí, súhrnné funkcie, konštanty a výrazy, ktoré zahŕňajú kombinácie vyššie uvedených.

Všetky názvy polí uvedené v klauzule SELECT sa musia objaviť v klauzule GROUP BY, pokiaľ sa názov stĺpca nepoužíva v konečná funkcia... Opak nie je pravdou — klauzula GROUP BY môže obsahovať názvy stĺpcov, ktoré nie sú uvedené v klauzule SELECT.

Ak sa s GROUP BY použije klauzula WHERE, potom sa spracuje ako prvá a zoskupia sa len tie riadky, ktoré spĺňajú podmienku vyhľadávania.

Štandard SQL špecifikuje, že keď sa vykoná zoskupovanie, všetky chýbajúce hodnoty sa považujú za rovnaké. Ak dva riadky tabuľky v rovnakom stĺpci zoskupenia obsahujú NULL a rovnaké hodnoty vo všetkých ostatných neprázdnych zoskupených stĺpcoch, umiestnia sa do rovnakej skupiny.

Príklad 6.9. Vypočítajte priemerný objem nákupov každého zákazníka.

SELECT Client.Surname, Avg (Deal. Quantity) AS Average_amount FROM Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code GROUP BY Client.Surname Príklad 6.9. Výpočet priemerného objemu nákupov každého zákazníka.

Fráza „každým zákazníkom“ sa v dotaze SQL odráža ako veta GROUP BY Client. Priezvisko.

Príklad 6.10. Zistite, za koľko sa každá položka predala.

VYBERTE Názov položky, Súčet (Cena položky * Množstvo ponuky) AKO CENA Z položky VNÚTORNÁ PRIPOJENIE K dohode ON Kód položky. Kód produktu = Kód ponuky GROUP BY Názov položky Príklad 6.10. Určenie toho, za koľko sa produkt každej položky predal.

SELECT Client.Firm, Count (Deal.Trade Code) AS Počet_ z_ obchodov OD VNÚTORNÉHO PRIPOJENIA klienta Obchod ON Kód klienta.Klient = Kód obchodu.Klient SKUPINA PODĽA klienta.Firmy Príklad 6.11. Počítanie počtu transakcií vykonaných každou firmou.

VYBERTE Klient.Firma, Súčet (Obchod. Množstvo) AKO Celkové_množstvo, Súčet (Produkt.Cena * Dohoda.Množstvo) AKO NÁKLADY Z VNÚTORNÉHO PRIPOJENIA produktu (VNÚTORNÉ PRIPOJENIE klienta Obchod NA Kód klienta.Klient = Kód obchodu.Klient) NA Produkt.Produkt Kód = Dohoda .Kód produktu SKUPINA PODĽA Klienta.Firma Príklad 6.12. Výpočet celkového množstva nakúpeného tovaru pre každú spoločnosť a jeho hodnoty.

Príklad 6.13. Určite celkové náklady na každý produkt za každý mesiac.

VYBERTE Názov položky, Mesiac (Dátum ponuky) AKO mesiac, Súčet (Cena položky * Množstvo ponuky) AKO CENA Z položky VNÚTORNÁ PRIPOJENIE K dohode ON Kód položky. Kód produktu = Kód ponuky SKUPINA PODĽA názvu položky, Mesiac (Dohoda .Dátum ) Príklad 6.13. Stanovenie celkových nákladov na každý produkt za každý mesiac.

Príklad 6.14. Určte celkové náklady na každý výrobok prvej triedy za každý mesiac.

VYBERTE názov položky, mesiac (dátum. obchodu) AKO mesiac, súčet (cena položky * množstvo. ponuky) AKO NÁKLADY Z položky VNÚTORNÁ PRIPOJTE SA PODĽA názvu položky, mesiaca (dátum ponuky) Príklad 6.14. Stanovenie celkových nákladov na každý výrobok prvého stupňa za každý mesiac.

klauzula HAVING

HAVING odráža všetky dátové bloky predtým zoskupené podľa GROUP BY, ktoré spĺňajú podmienky špecifikované v HAVING. Toto dodatočná príležitosť„filtrovať“ výstupnú súpravu.

Podmienky v HAVING sa líšia od podmienok v WHERE:

  • HAVING vylúči skupiny agregovaných hodnôt zo súboru výsledkov;
  • WHERE vylučuje z výpočtu súhrnných hodnôt zoskupením záznamov, ktoré nespĺňajú podmienku;
  • agregačné funkcie nemožno špecifikovať v klauzule vyhľadávania WHERE.

Príklad 6.15. Identifikujte firmy s celkovo viac ako tromi transakciami.

SELECT Klient.Firma, Počet (Číslo obchodu) AS Počet_ obchodov OD VNÚTORNÉHO PRIPOJENIA KLIENTA Obchod NA Kód klienta.Klient = Kód obchodu.Klienta SKUPINA PODĽA Klienta.Firma MAJÚCI Počet (Číslo obchodu)> 3 Príklad 6.15. Identifikácia firiem s celkovo viac ako tromi transakciami.

Príklad 6.16. Zobrazte zoznam produktov predaných za viac ako 10 000 RUB.

VYBERTE názov produktu, súčet (produkt. cena * množstvo. ponuky) AKO NÁKLADY OD produktu VNÚTORNÉ PRIPOJENIE AKCIE NA produkt. Kód produktu = Kód produktu = Kód produktu SKUPINA PODĽA názvu produktu MAJÚC súčet (cena produktu * Množstvo ponuky)> 10 000 Príklad 6.16. Zobrazenie zoznamu produktov predávaných za viac ako 10 000 rubľov.

Príklad 6.17. Zobrazte zoznam produktov predaných za viac ako 10 000 bez udania sumy.

VYBERTE Názov položky Z položky VNÚTORNÉ PRIPOJENIE K dohode ON Kód položky. Kód produktu = Kód ponuky GROUP BY Názov položky MÁ Súčet (Cena položky * Množstvo ponuky)> 10 000 Príklad 6.17. Zobrazenie zoznamu produktov predaných za viac ako 10 000 bez udania sumy.

Počnúc verziou 4.0 má MySQL DBMS pomerne pohodlnú schopnosť spočítať počet všetkých záznamov vhodných pre dotaz, keď je počet záznamov obmedzený na LIMIT. Pri práci s vyhľadávaním v databáze, ako aj pri výbere z tabuliek s veľká kvantita záznamov, takáto funkcionalita je jednoducho potrebná.

Syntax. V dotaze SELECT musí byť pred zoznamom stĺpcov zadaná voľba SQL_CALC_FOUND_ROWS. Tu je začiatok syntaxe klauzuly SELECT.

VYBRAŤ




select_expr, ... ...

Teda konaním VYBERTE dopyt SQL_CALC_FOUND_ROWS DBMS spočíta celkový počet riadkov zodpovedajúcich podmienke dotazu a uloží tento počet do pamäte. Prirodzene, dotaz SELECT SQL_CALC_FOUND_ROWS má zmysel len vtedy, keď sa použije obmedzenie (LIMIT). Ihneď po vykonaní výberového dotazu na získanie počtu záznamov musíte vykonať ďalší SELECT dotaz: SELECT FOUND_ROWS () ;. Výsledkom je, že MySQL vráti jeden riadok s jedným poľom, v ktorom bude uložený počet riadkov.

Príklad samotných žiadostí:

> SELECT SQL_CALC_FOUND_ROWS * FROM názov_tbl WHERE číslo> 100 LIMIT 10;
> SELECT FOUND_ROWS ();

Prvý dotaz vráti (vytlačí) 10 riadkov tabuľky tbl_name, pre ktorú platí podmienka číslo > 100. Druhé volanie príkazu SELECT vráti počet riadkov, ktoré by vrátil prvý príkaz SELECT, keby bol napísaný bez klauzuly LIMIT. Hoci MySQL musí pri použití SELECT SQL_CALC_FOUND_ROWS prepočítať všetky riadky v sade výsledkov, táto metóda je stále rýchlejšia ako bez LIMIT, pretože nemusí posielať výsledok klientovi.

Vzorové požiadavky z PHP:

$ vysledok = mysql_query ("SELECT SQL_CALC_FOUND_ROWS * FROM table1 LIMIT 0, 10", $ link);
while ($ riadok = mysql_fetch_assoc ($ výsledok))
{
var_dump (riadok $);
}

$ vysledok = mysql_query ("SELECT FOUND_ROWS ()", $ link);
$ num_rows = mysql_result ($ výsledok, 0);
echo "$ num_rows Riadky \ n";

V dôsledku vykonania kódu, za predpokladu, že $ link ukazuje na otvorené pripojenie k DBMS, PHP vypíše 10 riadkov z tabuľky1 a potom celočíselnou hodnotu pre počet riadkov, ktoré zodpovedajú dopytu (okrem LIMIT).

V dotazoch s UNION sa SQL_CALC_FOUND_ROWS môže správať dvoma spôsobmi, pretože LIMIT sa môže objaviť na viacerých miestach. Počítanie riadkov je možné vykonať pre jednotlivé SELECT dotazy alebo pre celý dotaz po zreťazení.

Účelom SQL_CALC_FOUND_ROWS pre UNION je vrátiť počet riadkov, ktoré budú vrátené bez globálneho LIMITU. Podmienky používania SQL_CALC_FOUND_ROWS s UNION sú nasledovné:

  • Kľúčové slovo SQL_CALC_FOUND_ROWS sa musí objaviť v prvom príkaze SELECT.
  • FOUND_ROWS () bude presné iba vtedy, ak sa použije UNION ALL. Ak je zadaná UNION bez ALL, dôjde k deduplikácii a FOUND_ROWS () je len približná.
  • Ak LIMIT nie je prítomný v UNION, potom sa SQL_CALC_FOUND_ROWS ignoruje a vráti sa počet riadkov v dočasnej tabuľke, ktorá je vytvorená na vykonanie UNION.

Na určenie počtu záznamov v MySQL tabuľka, musíte použiť špeciálna funkcia COUNT ().

Funkcia COUNT () vráti počet záznamov v tabuľke, ktoré zodpovedajú danému kritériu.

Funkcia COUNT (výraz) počíta vždy len tie riadky, kde má výraz výraz NOT NULL.

Výnimkou z tohto pravidla je použitie funkcie COUNT () s hviezdičkou ako argumentom - COUNT (*). V tomto prípade sa berú do úvahy všetky riadky bez ohľadu na to, či sú NULL alebo NOT NULL.

Napríklad funkcia COUNT (*) vráti celkový počet záznamov v tabuľke:

SELECT COUNT (*) FROM table_name

Ako spočítať počet záznamov a zobraziť

Príklad PHP + MySQL kódu na počítanie a zobrazenie celkového počtu riadkov:

$ res = mysql_query ("SELECT COUNT (*) FROM table_name") $ riadok = mysql_fetch_row ($ res); $ celkom = $ riadok; // celkove zaznamy echo $ total; ?>

Tento príklad ilustruje najjednoduchšie použitie funkcie COUNT (). Ale s touto funkciou môžete vykonávať aj iné úlohy.

Naznačením konkrétny stĺpec tabuľka ako parameter, funkcia COUNT (názov_stĺpca) vráti počet záznamov v tomto stĺpci, ktoré neobsahujú NULL. Položky NULL sa ignorujú.

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

Nemôžete použiť funkciu mysql_num_rows (), pretože na zistenie celkového počtu záznamov musíte vykonať dotaz SELECT * FROM db, to znamená získať všetky záznamy, čo je nežiaduce, preto je lepšie použite funkciu počítania.

$ vysledok = mysql_query ("SELECT COUNT (*) as rec FROM db");

Použitie funkcie COUNT () na príklade

Tu je ďalší príklad použitia funkcie COUNT (). Povedzme, že máte tabuľku zmrzliny s katalógom zmrzliny, ktorý obsahuje ID kategórií a názvy zmrzliny.

Lekcia SQL 8. Zoskupovanie záznamov a funkcia COUNT ().

Pripomeňme si, aké posolstvá a v akých témach máme. Ak to chcete urobiť, môžete použiť obvyklý dotaz:

Čo ak však potrebujeme zistiť, koľko správ je na fóre. Na tento účel môžete použiť vstavanú funkciu COUNT ()... Táto funkcia počíta počet riadkov. Navyše, ak * funguje ako argument tejto funkcie, potom sa počítajú všetky riadky tabuľky. A ak je ako argument uvedený názov stĺpca, potom sa počítajú iba tie riadky, ktoré majú hodnotu v zadanom stĺpci.

V našom príklade oba argumenty poskytnú rovnaký výsledok, pretože všetky stĺpce v tabuľke NIE SÚ NULL. Napíšme dotaz pomocou stĺpca id_topic ako argumentu:

SELECT COUNT (id_topic) Z príspevkov;

Takže v našich vláknach sú 4 príspevky. Ale čo ak chceme vedieť, koľko príspevkov má každá téma. Aby sme to dosiahli, musíme naše správy zoskupiť podľa témy a vypočítať počet správ pre každú skupinu. Na zoskupovanie v SQL použite operátor GROUP BY... Naša požiadavka bude teraz vyzerať takto:

SELECT id_topic, COUNT (id_topic) FROM príspevkov GROUP BY id_topic;

Operátor GROUP BY povie DBMS, aby zoskupil údaje podľa stĺpca id_topic (t. j. každá téma je samostatná skupina) a aby pre každú skupinu spočítal počet riadkov:

No v téme s id = 1 máme 3 správy a s id = 4 - jednu. Mimochodom, ak by v poli id_topic neboli žiadne hodnoty, potom by sa takéto riadky spojili do samostatnej skupiny s hodnotou NULL.

Predpokladajme, že nás zaujímajú iba skupiny s viac ako dvoma správami. V bežnom dotaze by sme zadali podmienku pomocou operátora KDE, ale tento operátor môže pracovať iba s reťazcami a pre skupiny vykonáva rovnaké funkcie operátor MAJÚCI:

SELECT id_topic, COUNT (id_topic) FROM príspevkov GROUP BY id_topic HAVING COUNT (id_topic)> 2;

V dôsledku toho máme:

V lekcii 4 sme zvažovali, aké podmienky môže operátor nastaviť KDE, rovnaké podmienky môže nastaviť aj operátor MAJÚCI, len si to musíte zapamätať KDE filtruje linky a MAJÚCI- skupiny.

Dnes sme sa teda naučili, ako vytvárať skupiny a ako počítať počet riadkov v tabuľke a v skupinách. Spravidla spolu s operátorom GROUP BY môžete použiť ďalšie vstavané funkcie, ale budeme ich študovať neskôr.

Naučíme sa sumarizovať. Nie, toto ešte nie sú výsledky štúdia SQL, ale výsledky hodnôt stĺpcov databázových tabuliek. Agregátne SQL funkcie konať s hodnotami stĺpca, aby ste získali 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ú samy osebe a vracajú jedinú výslednú hodnotu. Po druhé, agregačné funkcie sa používajú s klauzulou SQL GROUP BY, to znamená so zoskupením podľa polí (stĺpcov), aby sa získali výsledné hodnoty v každej skupine. Uvažujme najskôr o prípadoch použitia agregačných funkcií bez zoskupovania.

Funkcia SQL SUM

Funkcia SQL SUM vracia súčet hodnôt stĺpca v databázovej tabuľke. Dá sa použiť iba na stĺpce, ktorých hodnoty sú čísla. SQL dotazy aby ste získali výslednú sumu, začnite 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 možno pred názvom stĺpca zadať DISTINCT, čo znamená, že sa budú počítať 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 je voliteľné).

Príklad 1 Existuje databáza spoločnosti s údajmi o jej divíziách a zamestnancoch. Tabuľka Zamestnanci má okrem všetkého stĺpec s údajmi o mzdách zamestnancov. Výber z tabuľky je nasledovný (pre zväčšenie obrázku kliknite naň ľavým tlačidlom myši):

Na získanie súčtu všetkých platov použijeme nasledujúci dotaz:

VYBERTE SUM (Plat) OD zamestnancov

Tento dotaz vráti 287664,63.

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

Funkcia SQL MIN

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

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

Chcete vedieť minimum mzdy zamestnanci oddelenia číslo 42. K tomu napíšte nasledujúcu žiadosť:

Požiadavka 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 Tabuľka Org sa pridáva do tabuľky Zamestnanci, ktorá obsahuje údaje o divíziách firmy. Zobrazte minimálny počet rokov, ktoré jeden zamestnanec odpracoval 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.

Je potrebné zistiť maximálny plat zamestnancov oddelenia číslo 42. K tomu napíšte nasledujúcu žiadosť:

Požiadavka vráti hodnotu 18352,80

Je čas cvičenia na sebariešenie.

Príklad 6. Opäť pracujeme s dvomi tabuľkami – Staff a Org. Vytlačte názov oddelenia a maximálne provízie zarobené jedným zamestnancom v oddelení patriacom do Východnej divízie. Použite JOIN (pripojiť sa k stolom) .

Funkcia SQL AVG

Vyššie uvedená syntax pre vyššie 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.

Predpokladajme, že chcete zistiť priemerné pracovné skúsenosti zamestnancov oddelenia číslo 42. Za týmto účelom napíšte nasledujúci dotaz:

Výsledkom bude hodnota 6,33

Príklad 8. Pracujeme s jedným stolom – Staff. Vyberte 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 s výnimkou 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) v tabuľke.

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

Je potrebné zistiť 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:

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

Výsledkom je 11.

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

Ak potrebujete zistiť celkový počet záznamov v tabuľke, potom ako argument funkcie COUNT použijeme dotaz s hviezdičkou:

VYBERTE POČET (*) OD personálu

Výsledkom je 17.

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

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

Súhrnné funkcie s SQL GROUP BY (zoskupovanie)

Teraz sa pozrime na používanie agregačných funkcií v spojení s klauzulou SQL GROUP BY. Klauzula SQL GROUP BY sa používa na zoskupenie výsledkových hodnôt podľa stĺpcov databázovej tabuľky. Stránka má lekciu venovanú tomuto operátorovi samostatne .

Príklad 12. Existuje databáza reklamného portálu. Obsahuje tabuľku Reklamy, ktorá obsahuje údaje o odoslaných inzerátoch 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órie (napríklad časti Byty a vily sú súčasťou kategórie Nehnuteľnosti). Stĺpec Jednotky obsahuje údaje o počte odoslaných inzerátov a stĺpec Peniaze obsahuje sumu peňazí prijatú za odoslanie inzerátov.

KategóriaČasťJednotkyPeniaze
DopravaMotorové vozidlá110 17600
VlastníctvoApartmány89 18690
VlastníctvoChatky57 11970
DopravaMotocykle131 20960
Stavebné materiályDosky68 7140
ElektrotechnikaTV prijímače127 8255
ElektrotechnikaChladničky137 8905
Stavebné materiályRegips112 11760
Voľný časknihy96 6240
VlastníctvoDomy47 9870
Voľný časHudba117 7605
Voľný časHry41 2665

Použitím SQL príkaz GROUP BY, nájdite množstvo peňazí zarobených odoslaním reklám v každej kategórii. Píšeme nasledujúcu žiadosť:

VYBERTE kategóriu, SÚČET (Peniaze) AKO PENIAZE Z REKLAMY GROUP BY Category

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

Pomocou príkazu SQL GROUP BY zistíte, ktorá časť každej kategórie mala najviac reklám. Píšeme nasledujúcu žiadosť:

VYBERTE kategóriu, časť, MAX (jednotky) AKO maximum ZO SKUPINY reklám podľa kategórie

Výsledkom bude nasledujúca tabuľka:

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

Relačné databázy dátový a SQL jazyk



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