Kapcsolatok

Számolja meg a rekordok számát a csoportokban (a GROUP BY készítette). Számítások sql-ben Adott értékű id számának kiszámítása

Ismerteti az aritmetikai operátorok használatát és a számított oszlopok felépítését. A COUNT, SUM, AVG, MAX, MIN összegző (összesítő) függvényeket veszi figyelembe. Példa látható a GROUP BY záradék használatára adatkiválasztási lekérdezések csoportosítására. Leírja a HAVING záradék használatát.

Számított mezők építése

Általában alkotni számított (származtatott) mező valamilyen kifejezést meg kell adni a SELECT listában SQL nyelv... Ezek a kifejezések összeadás, kivonás, szorzás és osztás aritmetikai és beépített SQL függvényeket használnak. Megadhatja a tábla vagy lekérdezés bármely oszlopának (mezőjének) nevét, de csak az adott tábla vagy lekérdezés oszlopnevét használja, amely a megfelelő utasítás FROM záradékában szerepel. Összetett kifejezések készítésekor szükség lehet zárójelekre.

Az SQL szabványok lehetővé teszik az eredménytábla oszlopneveinek explicit megadását az AS záradék használatával.

Termék KIVÁLASZTÁSA. Név, Termék.Ár, Akció.Mennyiség, Termék.Ár * Akció.Mennyiség, mint költség A terméktől BELSŐ CSATLAKOZÁS A termékre vonatkozó ajánlat.Termékkód = Deal.Termékkód 6.1. példa. Az egyes tranzakciók teljes költségének kiszámítása.

6.2. példa. Szerezzen listát a cégekről az ügyfelek nevével és kezdőbetűivel.

VÁLASZTÁS VÁLLALAT, Vezetéknév + "" + Balra (Utónév, 1) + "." + Balra (Középső név, 1) + "." AS Teljes név FROM Client 6.2. példa. Cégjegyzék beszerzése az ügyfelek vezetéknevének és kezdőbetűinek feltüntetésével.

A lekérdezés a beépített Left függvényt használja, amivel ebben az esetben egy szöveges változóban balról egy karaktert lehet kivágni.

6.3. példa. Szerezze meg a termékek listáját az értékesítés évével és hónapjával.

SELECT Item.Neve, Year (Deal.Date) AS Év, Hónap (Üzlet.Dátum) AS HÓNAP FROM Tétel BELSŐ CSATLAKOZTATÁSA Tétel.Termékkód = Deal.Product Code 6.3. példa. Terméklista kézhezvétele az értékesítés évével és hónapjával.

A lekérdezés a beépített Év és hónap függvényeket használja az év és a hónap kinyerésére egy dátumból.

Összefoglaló függvények használata

Használva összefoglaló (összesítő) függvények egy SQL lekérdezés keretén belül számos összefoglaló statisztikát kaphat a kimeneti halmaz kiválasztott értékkészletéről.

A következő főbbek állnak a felhasználó rendelkezésére. összefoglaló függvények:

  • Szám (kifejezés) - meghatározza a rekordok számát az SQL lekérdezés kimeneti halmazában;
  • Min / Max (kifejezés) - határozza meg a legkisebb és a legnagyobb értékkészletet a kérés egy bizonyos mezőjében;
  • Átlag (kifejezés) – Ez a funkció lehetővé teszi a lekérdezéssel kiválasztott rekordok egy adott mezőjében tárolt értékkészlet átlagának kiszámítását. Ez a számtani átlag, azaz. az értékek összege osztva a számukkal.
  • Összeg (kifejezés) - kiszámítja a lekérdezéssel kiválasztott rekordok egy adott mezőjében található értékkészlet összegét.

Az oszlopneveket leggyakrabban kifejezésként használják. A kifejezés több táblázat értékeinek felhasználásával is kiszámítható.

Mindezek a függvények a táblázat egyetlen oszlopában lévő értékeken vagy egy aritmetikai kifejezéssel működnek, és egyetlen értéket adnak vissza. A COUNT, MIN és MAX függvények numerikus és nem numerikus mezőkre egyaránt érvényesek, míg a SUM és AVG függvények csak numerikus mezők esetén használhatók, a COUNT (*) kivételével. Bármely függvény eredményének kiszámításakor először minden üres érték kizárásra kerül, majd a szükséges művelet csak a fennmaradó adott oszlopértékekre vonatkozik. A COUNT (*) változat a COUNT függvény használatának speciális esete, célja az eredményül kapott táblázat összes sorának megszámlálása, függetlenül attól, hogy üres, ismétlődő vagy bármilyen más értéket tartalmaz.

Ha meg kell szüntetnie az ismétlődő értékeket az általános függvény használata előtt, akkor a függvénydefinícióban az oszlop nevét előzze meg kulcsszó KÜLÖNBÖZŐ. Ennek nincs értelme a MIN és MAX függvényeknél, viszont használata befolyásolhatja a végrehajtás eredményét. SUM függvényekés AVG, ezért előre meg kell fontolni, hogy minden esetben jelen kell-e lennie. Ezenkívül a DISTINCT kulcsszó legfeljebb egyszer adható meg bármely lekérdezésben.

Ezt nagyon fontos megjegyezni összefoglaló függvények csak a listában használható SELECT záradékokés a HAVING záradék részeként. Minden más esetben ez elfogadhatatlan. Ha a SELECT záradékban lévő lista tartalmazza összefoglaló függvények, és a lekérdezés szövege nem tartalmazza a GROUP BY záradékot, amely biztosítja az adatok csoportokba való összevonását, akkor a SELECT záradéklista egyik eleme sem tartalmazhat mezőkre való hivatkozást, kivéve azt az esetet, amikor a mezők argumentumként működnek. összefoglaló függvények.

6.4. példa. Határozza meg az első alfabetikus terméknevet.

SELECT Min (Elem neve) AS Min._Name FROM Tétel 6.4. példa. Az első alfabetikus terméknév meghatározása.

6.5. példa. Határozza meg a tranzakciók számát.

SELECT Count (*) AS A kereskedések száma_ FROM Trade 6.5. példa. Határozza meg a tranzakciók számát.

6.6. példa. Határozza meg az eladott áruk teljes mennyiségét.

SELECT Sum (Deal.Quantity) AS Item_Quantity FROM Deal 6.6. példa. Az eladott áruk teljes mennyiségének meghatározása.

6.7. példa. Határozza meg az eladott áruk átlagos árát!

KIVÁLASZTÁS Átl. (cikk.ár) AS Átl.ár Tétel BELSŐ CSATLAKOZTATÁSA Tétel.Termékkód = Deal.Product Code; 6.7. példa. Eladott áruk átlagárának meghatározása.

KIVÁLASZTÁSI ÖSSZEG (Cikk.Ár * Akció.Mennyiség) MINT Költség Tétel BELSŐ CSATLAKOZTATÁSA Tétel.Termékkód = Deal.Termékkód 6.8. példa. Az eladott áruk összköltségének kiszámítása.

GROUP BY záradék

A lekérdezések gyakran részösszegeket igényelnek, amit általában az „mindegyikhez...” kifejezés megjelenése jelez a lekérdezésben. A GROUP BY záradék erre a célra szolgál a SELECT utasításban. A GROUP BY-t tartalmazó lekérdezést csoportosítási lekérdezésnek nevezzük, mivel csoportosítja a SELECT műveletből származó adatokat, majd minden egyes csoporthoz egyetlen összefoglaló sort hoz létre. Az SQL-szabvány megköveteli, hogy a SELECT és a GROUP BY záradék szorosan kapcsolódjon egymáshoz. Ha a SELECT utasításban található GROUP BY záradék, akkor a SELECT záradékban minden listaelemnek egyetlen értékkel kell rendelkeznie a teljes csoportra vonatkozóan. Ezenkívül a SELECT záradék csak a következő elemtípusokat tartalmazhatja: mezőnevek, összefoglaló függvények, konstansok és kifejezések, amelyek a fentiek kombinációit tartalmazzák.

A SELECT záradékban felsorolt ​​összes mezőnévnek szerepelnie kell a GROUP BY záradékban, kivéve, ha az oszlopnevet használják végső funkciója... Ennek fordítottja nem igaz – a GROUP BY záradék tartalmazhat olyan oszlopneveket, amelyek nem szerepelnek a SELECT záradékban.

Ha egy WHERE záradékot használunk a GROUP BY paraméterrel, akkor először az kerül feldolgozásra, és csak azok a sorok kerülnek csoportosításra, amelyek megfelelnek a keresési feltételnek.

Az SQL szabvány előírja, hogy a csoportosítás végrehajtásakor minden hiányzó értéket egyenlőnek kell tekinteni. Ha ugyanabban a csoportosító oszlopban két táblázatsor NULL értéket tartalmaz, és azonos értékeket tartalmaz az összes többi nem üres csoportosított oszlopban, akkor ugyanabba a csoportba kerülnek.

6.9. példa. Számítsa ki az egyes vásárlók által végrehajtott vásárlások átlagos mennyiségét.

SELECT Client.Vezetéknév, Átl. (Ügylet.Mennyiség) AS Átlagos_összeg FROM Ügyfél BELSŐ CSATLAKOZTATÁSA Ügyfél.Client kód = Ügyfélkód GROUP BY Client.Urname 6.9. példa. Az egyes vásárlók átlagos vásárlási volumenének kiszámítása.

Az „minden vásárló által” kifejezés az SQL-lekérdezésben mondatként jelenik meg GROUP BY ügyfél. Vezetéknév.

6.10. példa. Határozza meg, mennyiért adták el az egyes tételeket.

Tételnév, Összeg (cikk.ár * ajánlat.mennyiség) KIVÁLASZTÁS A cikktől BELSŐ CSATLAKOZÁS CSOPORT TÉTELNÉV. 6.10. példa. Annak meghatározása, hogy az egyes cikkek termékét mennyiért adták el.

SELECT Client.Firm, Count (Deal.Trade Code) AS Kereskedések száma_ FROM Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code CSOPORT BY Client.Firm 6.11. példa. Az egyes cégek által végrehajtott tranzakciók számának számolása.

SELECT Client.Firm, Sum (Deal.Quantity) AS Total_Quantity, Sum (Term.ár * Deal.Quantity) AS költség A termék BELSŐ CSATLAKOZTATÁSBÓL (Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code) ON Product.Product Code = Deal .Product Code CSOPORT BY Client.Firm 6.12. példa. Az egyes cégeknél vásárolt áruk teljes mennyiségének és értékének kiszámítása.

6.13. példa. Határozza meg az egyes termékek teljes költségét minden hónapban.

SELECT Cikk.név, hónap (üzlet.dátum) AS hónap, összeg (cikk.ár * ajánlat.mennyiség) AS költség Tétel BELSŐ CSATLAKOZTATÁSA Tétel.Termékkód = Deal.Termékkód CSOPORT TÉTEL SZERINT, Hónap (Ügylet) .Dátum ) 6.13. példa. Az egyes termékek összköltségének meghatározása havonta.

6.14. példa. Határozza meg az egyes első osztályú termékek összköltségét minden hónapban.

SELECT Cikk.név, hónap (üzlet.dátum) AS hónap, összeg (cikk.ár * akció.mennyiség) AS költség Tétel BELSŐ CSATLAKOZTATÁSA Tétel.Termékkód = Ügylet.Termékkód WHERE Cikk.Változat = "Első" CSOPORT Tétel szerint .név, hónap (üzlet.dátum) 6.14. példa. Az egyes első osztályú termékek összköltségének meghatározása havonta.

HAVING záradék

A HAVING tükrözi a GROUP BY által korábban csoportosított összes adatblokkot, amely megfelel a HAVING-ben meghatározott feltételeknek. azt további lehetőség"szűrje" a kimeneti készletet.

A HAVING feltételei eltérnek a WHERE feltételeitől:

  • A HAVING kizárja az összesített értékcsoportokat az eredményadatkészletből;
  • WHERE kizárja az összesített értékek számításából a feltételnek nem megfelelő rekordok csoportosításával;
  • az összesítő függvények nem adhatók meg a WHERE keresési záradékban.

6.15. példa. Azonosítsa azokat a cégeket, amelyek összesen háromnál több tranzakcióval rendelkeznek.

SELECT Client.Firm, Count (Deal.Number) AS Number_ of_ trades FROM Client INNER JOIN Deal ON Client.Client Code = Deal.Client Code CSOPORT BY Client.Firm HAVING Count (Deal.Number)> 3 6.15. példa. Az összesen háromnál több ügyletet lebonyolító cégek azonosítása.

6.16. példa. Jelenítse meg a 10 000 RUB felett eladott termékek listáját.

KIVÁLASZTÁSA Termék neve, összege (termék.ár * ajánlat.mennyiség) MINT Költség A terméktől BELSŐ CSATLAKOZÁS Akció a termékre.Termékkód = Deal.Termékkód CSOPORT TERMÉK SZERINT. 6.16. példa. A több mint 10 000 rubelért eladott termékek listájának megjelenítése.

6.17. példa. Jelenítse meg a 10 000-nél többet eladott termékek listáját az összeg megadása nélkül.

Tétel.Név KIVÁLASZTÁS A cikkből BELSŐ CSATLAKOZÁS Akció ON Cikk.Termékkód = Ügylet.Termékkód CSOPORTOSÍTÁS Tétel.Név SZERINTI ÖSSZEG (Cikk.Ár * Ügylet.Mennyiség)> 10000 6.17. példa. 10 000-nél többet értékesített termékek listájának megjelenítése az összeg megadása nélkül.

A 4.0-s verziótól kezdődően a MySQL DBMS meglehetősen kényelmesen képes megszámolni az összes lekérdezésre alkalmas rekord számát, ha a rekordok számát LIMIT korlátozza. Amikor adatbázis-kereséssel dolgozik, valamint amikor táblákból választ ki nagy mennyiség rekordokat, az ilyen funkciók egyszerűen szükségesek.

Szintaxis. A SELECT lekérdezésben az SQL_CALC_FOUND_ROWS beállítást meg kell adni az oszlopok listája előtt. Itt van a SELECT záradék szintaxisának eleje.

KIVÁLASZTÁS




select_expr, ... ...

Így tettével SELECT lekérdezés SQL_CALC_FOUND_ROWS A DBMS megszámolja a lekérdezési feltételnek megfelelő sorok teljes számát, és eltárolja ezt a számot a memóriában. Természetesen a SELECT SQL_CALC_FOUND_ROWS lekérdezésnek csak akkor van értelme, ha a (LIMIT) megszorítást használják. Közvetlenül egy kiválasztási lekérdezés végrehajtása után, hogy megkapja a rekordok számát, egy másik SELECT lekérdezést kell végrehajtania: SELECT FOUND_ROWS () ;. Ennek eredményeként a MySQL egy sort ad vissza egy mezővel, amely tárolja a sorok számát.

Példa magukra a kérésekre:

> SELECT SQL_CALC_FOUND_ROWS * FROM tbl_name WHERE szám> 100 LIMIT 10;
> TALÁLT_SOROK KIVÁLASZTÁSA ();

Az első lekérdezés a tbl_name tábla 10 sorát adja vissza (kiírja), amelyre a feltétel száma> 100. A SELECT parancs második hívása visszaadja a sorok számát, amennyit az első SELECT parancs adott volna, ha megírták volna LIMIT záradék nélkül. Bár a SELECT SQL_CALC_FOUND_ROWS parancs használatához a MySQL-nek újra kell számítania az eredményhalmaz összes sorát, ez a módszer még mindig gyorsabb, mint a LIMIT nélkül, mivel nem kell elküldenie az eredményt az ügyfélnek.

Minta kérések a PHP-től:

$ eredmény = mysql_query ("SELECT SQL_CALC_FOUND_ROWS * FROM table1 LIMIT 0, 10", $ link);
while ($ sor = mysql_fetch_assoc ($ eredmény))
{
var_dump ($ sor);
}

$ eredmény = mysql_query ("SELECT FOUND_ROWS ()", $ link);
$ sorok száma = mysql_result ($ eredmény, 0);
echo "$ sorok_száma Sorok \ n";

A kód végrehajtásának eredményeként, feltéve, hogy a $ link egy nyitott kapcsolatra mutat a DBMS-sel, a PHP 10 sort ad ki a 1. táblából, majd egy egész értéket a lekérdezésnek megfelelő sorok számára (a LIMIT kivételével).

Az UNION lekérdezésekben az SQL_CALC_FOUND_ROWS kétféleképpen viselkedhet, mivel a LIMIT több helyen is megjelenhet. A sorszámlálás elvégezhető az egyes SELECT lekérdezésekre, vagy az összefűzés után a teljes lekérdezésre.

Az SQL_CALC_FOUND_ROWS for UNION célja az, hogy globális LIMIT nélkül adja vissza a visszaadott sorok számát. Az SQL_CALC_FOUND_ROWS UNION-nal való használatának feltételei a következők:

  • Az SQL_CALC_FOUND_ROWS kulcsszónak meg kell jelennie az első SELECT utasításban.
  • A FOUND_ROWS () csak akkor lesz pontos, ha az UNION ALL van használva. Ha az UNION az ALL nélkül van megadva, akkor megtörténik a duplikáció megszüntetése, és a FOUND_ROWS () csak hozzávetőleges.
  • Ha a LIMIT nem szerepel az UNION-ban, akkor a rendszer figyelmen kívül hagyja az SQL_CALC_FOUND_ROWS-t, és visszaadja az UNION végrehajtásához létrehozott ideiglenes tábla sorainak számát.

A bejegyzések számának meghatározásához MySQL tábla, használnia kell speciális funkció SZÁMOL ().

A COUNT () függvény a táblázat azon rekordjainak számát adja vissza, amelyek megfelelnek egy adott feltételnek.

A COUNT (kifejezés) függvény mindig csak azokat a sorokat számolja, ahol az expr értéke NEM NULL.

Ez alól a szabály alól kivételt képez a COUNT () függvény használata csillaggal argumentumként - COUNT (*). Ebben az esetben a rendszer minden sort figyelembe vesz, függetlenül attól, hogy NULL vagy NEM NULL.

Például a COUNT (*) függvény a tábla rekordjainak teljes számát adja vissza:

COUNT (*) KIVÁLASZTÁS A tábla_nevéből

Hogyan kell megszámolni a bejegyzések számát és a megjelenítést

Példa PHP + MySQL kódra a sorok teljes számának megszámlálásához és megjelenítéséhez:

$ res = mysql_query ("SELECT COUNT (*) FROM FROM table_name") $ row = mysql_fetch_row ($ res); $ összesen = $ sor; // összes rekord echo $ összesen; ?>

Ez a példa a COUNT () függvény legegyszerűbb használatát mutatja be. De ezzel a funkcióval más feladatokat is végrehajthat.

Jelezve adott oszlop táblázat paraméterként, a COUNT (oszlop_neve) függvény azon rekordok számát adja vissza ebben az oszlopban, amelyek nem tartalmaznak NULL értéket. A NULL bejegyzéseket figyelmen kívül hagyja.

COUNT (oszlopnév) KIVÁLASZTÁS A táblanévből

A mysql_num_rows () függvény nem használható, mert a rekordok teljes számának megtudásához a SELECT * FROM db lekérdezést kell végrehajtani, azaz minden rekordot be kell szerezni, ami nem kívánatos, ezért célszerű használja a számláló funkciót.

$ eredmény = mysql_query ("SELECT COUNT (*) as rec FROM db");

A COUNT () függvény használata példaként

Íme egy másik példa a COUNT () függvény használatára. Tegyük fel, hogy van egy fagylalt-asztala fagylalt-katalógussal, amely kategóriaazonosítókat és fagylaltneveket tartalmaz.

SQL lecke 8. Rekordok csoportosítása és a COUNT () függvény

Emlékezzünk rá, milyen üzeneteink vannak és milyen témákban. Ehhez használhatja a szokásos lekérdezést:

De mi van akkor, ha csak azt kell megtudnunk, hány üzenet van a fórumon. Ehhez használhatja a beépített funkciót SZÁMOL ()... Ez a függvény a sorok számát számolja. Ezen túlmenően, ha a * ennek a függvénynek az argumentumaként működik, akkor a táblázat összes sora számít. És ha egy oszlopnév argumentumként van megadva, akkor csak azokat a sorokat számolja a rendszer, amelyeknek a megadott oszlopban van értéke.

Példánkban mindkét argumentum ugyanazt az eredményt adja, mivel a táblázat összes oszlopa NEM NULL. Írjunk lekérdezést az id_topic oszlopot használva argumentumként:

COUNT KIVÁLASZTÁS (id_topic) A bejegyzésekből;

Tehát 4 bejegyzés található a szálainkban. De mi van akkor, ha tudni akarjuk, hogy az egyes témák hány bejegyzést tartalmaznak. Ehhez téma szerint csoportosítanunk kell üzeneteinket, és ki kell számítanunk az egyes csoportokhoz tartozó üzenetek számát. Az SQL-ben történő csoportosításhoz használja az operátort CSOPORTOSÍT... A kérésünk most így fog kinézni:

SELECT id_topic, COUNT (id_topic) FROM bejegyzésekből GROUP BY id_topic;

Operátor CSOPORTOSÍT utasítja a DBMS-t, hogy csoportosítsa az adatokat az id_topic oszlop szerint (azaz minden téma külön csoport), és minden csoportnak számolja meg a sorok számát:

Nos, az id = 1 témában 3 üzenetünk van, az id = 4-nél pedig egy. Mellesleg, ha nem lennének értékek az id_topic mezőben, akkor az ilyen sorokat egy külön csoportba egyesítenék NULL értékkel.

Tegyük fel, hogy csak a kettőnél több üzenetet tartalmazó csoportok érdekelnek bennünket. Egy normál lekérdezésben az operátor használatával adnánk meg egy feltételt AHOL, de ez az operátor csak karakterláncokkal tud működni, és csoportoknál ugyanazokat a funkciókat hajtja végre az operátor HAJNÁL:

SELECT id_topic, COUNT (id_topic) FROM bejegyzésekből GROUP BY id_topic HAVING COUNT (id_topic)> 2;

Ennek eredményeként a következőkkel rendelkezünk:

A 4. leckében megvizsgáltuk, hogy milyen feltételeket szabhat a kezelő AHOL, ugyanazokat a feltételeket állíthatja be az üzemeltető HAJNÁL, csak emlékezned kell erre AHOL szűri a vonalakat, és HAJNÁL- csoportok.

Így ma megtanultuk, hogyan kell csoportokat létrehozni, és hogyan kell megszámolni a sorok számát egy táblázatban és csoportokban. Általában a kezelővel együtt CSOPORTOSÍT más beépített funkciókat is használhat, de ezeket később tanulmányozzuk.

Megtanulunk összefoglalni. Nem, ezek még nem az SQL tanulmányozásának eredményei, hanem az adatbázistáblák oszlopainak értékeinek eredményei. Összesített SQL függvények cselekedjen az oszlopértékeken, hogy egyetlen eredményt kapjon. A leggyakrabban használt SQL összesítő függvények a SUM, MIN, MAX, AVG és COUNT. Különbséget kell tenni az aggregált függvények használatának két esete között. Először is, az összesített függvények önmagukban használatosak, és egyetlen eredményt adnak vissza. Másodszor, az összesítő függvényeket az SQL GROUP BY záradékkal használják, vagyis a mezők (oszlopok) szerinti csoportosítással, hogy megkapják az egyes csoportok eredményértékeit. Először nézzük meg az összesített függvények csoportosítás nélküli használatának eseteit.

SQL SUM függvény

Az SQL SUM függvény egy adatbázistábla oszlopának értékeinek összegét adja vissza. Csak olyan oszlopokra alkalmazható, amelyek értéke számok. SQL lekérdezések a kapott összeg eléréséhez kezdje így:

ÖSSZEG KIVÁLASZTÁSA (COLUMN_NAME)...

Ezt a kifejezést a FROM (TABLE_NAME) követi, majd a WHERE záradékkal adható meg egy feltétel. Ezenkívül az oszlop neve előtt a DISTINCT is megadható, ami azt jelenti, hogy csak az egyedi értékek kerülnek számításba. Alapértelmezés szerint az összes értéket figyelembe veszi (ehhez nem a DISTINCT, hanem az ALL szót adhatja meg, de az ALL szó nem kötelező).

1. példa Van egy adatbázis a cégről, amely tartalmazza a részlegekre és a dolgozókra vonatkozó adatokat. A Személyzet táblázatban mindenen kívül van egy oszlop a dolgozói fizetések adataival. A táblázatból a kiválasztás a következő (a kép nagyításához kattintson rá a bal egérgombbal):

Az összes fizetés összegének kiszámításához a következő lekérdezést használjuk:

ÖSSZEG KIVÁLASZTÁSA (Bérezés) A személyzettől

Ez a lekérdezés 287664.63-at ad vissza.

És most . A gyakorlatokban már kezdjük bonyolítani a feladatokat, közelebb hozva azokat a gyakorlatban tapasztaltakhoz.

SQL MIN függvény

Az SQL MIN függvény olyan oszlopokon is működik, amelyek értéke számok, és az oszlopban lévő összes érték minimumát adja vissza. Ennek a függvénynek ugyanaz a szintaxisa, mint a SUM függvénynek.

3. példa Az adatbázis és a tábla ugyanaz, mint az 1. példában.

A minimumot szeretné tudni bérek 42. számú osztály dolgozói. Ehhez írja meg az alábbi kérést:

A kérés az 10505.90 értéket adja vissza.

És újra gyakorolni önálló döntés ... Ebben és néhány más gyakorlatban nem csak a Staff táblázatra lesz szüksége, hanem az Org táblára is, amely a cég részlegeiről tartalmaz adatokat:


4. példa Az Org tábla hozzáadásra kerül a Staff táblához, amely a cég részlegeinek adatait tartalmazza. Jelenítse meg, hogy egy alkalmazott minimálisan hány évet dolgozott egy bostoni osztályon.

SQL MAX függvény

Az SQL MAX függvény hasonlóan működik, és hasonló szintaxissal rendelkezik, amelyet akkor használnak, amikor meg kell határozni a maximális értéket egy oszlopban lévő összes érték közül.

5. példa

Meg kell találni a 42. számú osztály dolgozóinak maximális fizetését. Ehhez írja be a következő kérést:

A kérés az 18352.80 értéket adja vissza

Eljött az idő önmegoldó gyakorlatok.

6. példa Ismét két asztallal dolgozunk - Staff és Org. Nyomtassa ki a részleg nevét és a keleti részleghez tartozó osztályon egy alkalmazott által megkeresett maximális jutalékot. Használat CSATLAKOZÁS (táblázatok összekapcsolása) .

SQL AVG funkció

A fenti szintaxis a korábban leírt függvényeknél az SQL AVG függvényre is igaz. Ez a függvény egy oszlopban lévő összes érték átlagát adja vissza.

7. példa. Az adatbázis és a tábla ugyanaz, mint az előző példákban.

Tegyük fel, hogy szeretné megtudni a 42. számú osztály dolgozóinak átlagos munkatapasztalatát. Ehhez írja be a következő lekérdezést:

Az eredmény 6,33 lesz

8. példa. Egy asztallal dolgozunk - Személyzet. A 4-6 éves tapasztalattal rendelkező alkalmazottak átlagfizetésének visszavonása.

SQL COUNT függvény

Az SQL COUNT függvény az adatbázistábla rekordjainak számát adja vissza. Ha a lekérdezésben megadja a SELECT COUNT (COLUMN_NAME) ... értéket, az eredmény a rekordok száma lesz, kivéve azokat a rekordokat, amelyekben az oszlop értéke NULL (meghatározatlan). Ha egy csillagot használ argumentumként, és elindít egy SELECT COUNT (*) ... lekérdezést, az eredmény a táblázat összes rekordjának (sorának) száma lesz.

9. példa. Az adatbázis és a tábla ugyanaz, mint az előző példákban.

Meg kell találni a jutalékban részesülő alkalmazottak számát. Azon alkalmazottak száma, akiknek a Comm oszlop értéke nem NULL, a következő lekérdezést adja vissza:

SZÁM KIVÁLASZTÁSA (Kommunikáció) A személyzettől

Az eredmény: 11.

10. példa. Az adatbázis és a tábla ugyanaz, mint az előző példákban.

Ha meg kell találnia egy táblázat rekordjainak teljes számát, akkor a COUNT függvény argumentumaként egy csillaggal ellátott lekérdezést használunk:

SZÁM KIVÁLASZTÁSA (*) A személyzettől

Az eredmény a 17.

A következőben önsegítő gyakorlat részlekérdezést kell használnia.

11. példa. Egy asztallal dolgozunk - Személyzet. Jelenítse meg a tervezési osztályon (Plains) dolgozók számát.

Összesített függvények SQL-lel GROUP BY (csoportosítás)

Most nézzük meg az összesítő függvények használatát az SQL GROUP BY záradékkal együtt. Az SQL GROUP BY záradék az eredményértékek csoportosítására szolgál az adatbázistábla oszlopai szerint. Az oldalon van külön ennek az operátornak szentelt leckét .

12. példa. Van egy hirdetési portál adatbázis. Ez tartalmazza a Hirdetések táblázatot, amely a hétre leadott hirdetések adatait tartalmazza. A Kategória oszlop a hirdetések nagy kategóriáiról (például Ingatlan), a Részletek oszlopban pedig a kategóriába tartozó kisebb részek adatait tartalmazza (például a Lakások és villák részei az Ingatlan kategória részei). Az Egységek oszlopban a leadott hirdetések számáról, a Pénz oszlopban pedig a hirdetések feladásáért kapott pénzösszeg szerepel.

KategóriaRészEgységekPénz
SzállításGépjármű110 17600
IngatlanApartmanok89 18690
IngatlanVíkendházak57 11970
SzállításMotorkerékpárok131 20960
ÉpítőanyagokDeszkák68 7140
VillamosmérnökTV-készülékek127 8255
VillamosmérnökHűtőszekrények137 8905
ÉpítőanyagokRegips112 11760
SzabadidőKönyvek96 6240
IngatlanHázak47 9870
SzabadidőZene117 7605
SzabadidőJátékok41 2665

Használata SQL utasítás GROUP BY, keresse meg az egyes kategóriákban a hirdetések elküldésével megkeresett pénzösszeget. Az alábbi kérést írjuk:

Kategória VÁLASZTÁSA, ÖSSZEG (PÉNZ), MINT pénz a hirdetésekből GROUP BY kategória

13. példa. Az adatbázis és a tábla ugyanaz, mint az előző példában.

Az SQL GROUP BY utasítás segítségével megtudhatja, hogy az egyes kategóriák melyik részén volt a legtöbb hirdetés. Az alábbi kérést írjuk:

KIVÁLASZT kategória, rész, MAX (egység) AS Maximum FROM hirdetésekből GROUP BY Kategória

Az eredmény a következő táblázat lesz:

Összes és egyedi értékek egy táblázatban szerezhetők be a lekérdezés eredményeinek kombinálása az UNION operátor használatával .

Relációs adatbázisok adatok és SQL nyelv



Tetszett a cikk? Oszd meg