megértés sql
Ebben a fejezetben, akkor lépni az egyszerű használat lekérdezések kivonat értékeket az adatbázisból, és meghatározza, hogyan használhatja ezeket az értékeket, hogy információt tőlük. Ezt használja az aggregált, illetve az általános funkciók értékeket vehetnek a csoport a földre, és csökkenti azokat egyetlen érték. Meg fogja tanulni, hogyan kell használni ezeket a funkciókat, hogyan kell meghatározni az értékeket a csoport, amelyhez fogja alkalmazni, és hogyan kell meghatározni, hogy mely csoportok kiválasztott kimenet. Azt is látni a feltételeket, amelyek mellett lesz képes egyesíteni az értékeket a padlót a kapott információkat egy kéréssel.
MI összesítő függvények?
Lekérdezések képes általános csoportban mező értékeket, mint az értéke egy emelet. Ez teszi a aggregált funkciókat. Összesítő függvények egy egyedi értéket a teljes táblázatot csoport. Van egy lista ezeket a funkciókat:
Hogyan kell használni összesítő függvények?
Összesített funkciók használatakor, mint a mezők nevét a SELECT utasításban a lekérdezés, de egy kivétellel, ezért ezek a padlón neveket érveket. Csak numerikus mezők használható SUM és az AVG. COUNT, MAX, MIN, lehet numerikus vagy karakter padlón. Amikor a használt karakteres mezők, MAX, MIN és lefordítja őket ASCII megfelelője, amelynek meg kell jelenteni, hogy lesz az első MIN, MAX és az utolsó ábécé sorrendben (alfabetikus rendezés témáról részletesebben a 4. fejezetben).
tudjuk be a következő lekérdezés megtalálni az összeg minden a mi vásárlások sorrendjében az asztalra, és annak kimenete 6.1 ábra:
Ez természetesen eltér a kiválasztási területen, amelyen ezután egyetlen érték, nem számít, hogy hány sor van a táblázatban. Emiatt, aggregált funkciót, és a mező nem lehet kiválasztva egy időben, amíg a félkész GROUP BY (később ismertetjük) nem kerül felhasználásra. Megtalálása az átlagolt összegeket - egy hasonló műveletet (kimenő e lekérdezés 6.2 ábrán látható):
Speciális jellemzőkkel COUNT
COUNT függvény egy kissé eltér a többitől. Számít az értékek számát ebben az oszlopban, vagy a sorok számát a táblázatban. Ha úgy találja, egy oszlop értéke, akkor használják, hogy készítsen egy KÜLÖNÁLLÓ számlaszámokat eltérő értékek ezen a területen. Tudtuk használni, például számolni az eladók jelenleg a táblázatban leírt megbízások (ábrán látható eredményt 6,3):
USE különálló
Figyeljük meg a fenti példa, hogy egy KÜLÖNÁLLÓ, majd a neve a padló, amelyre alkalmazzák, zárójelbe, de nem azonnal, miután a SELECT, mint korábban. Ez a használat KÜLÖNÁLLÓ COUNT alkalmazhatók az egyes oszlopokban, felhívja az ANSI szabvány, de sok program nem teszi őket egy ilyen követelmény.
Megadhatja több beszámoló (COUNT) a mezők segítségével megkülönböztethető egy kéréssel, amely, mint láttuk, a 3. fejezetben nem végeztek, amikor kiválaszt egy sort használ különbözőek. KÜLÖNÁLLÓ lehet használni ilyen módon, semmilyen funkciót a készülék, de a leggyakrabban azt használják a COUNT. A MAX és MIN, csak nem lesz semmilyen hatása, és az AVG és SUM, akkor általában használni, hogy a kettős értékek, mivel ezek joghatályos teljes és átlagos értékei az összes oszlopot.
USE COUNT vonalak, nem az érték
Kiszámításához a teljes sorok számát a táblázatban, használja COUNT függvény neve csillaggal helyett a padló, mint amilyen ebben a példában, a kimenete, amely ábrán látható 6.4:
COUNT csillaggal tartalmazza NULL, és megismételték a KÜLÖNÁLLÓ emiatt nem lehet használni. KÜLÖNÁLLÓ képes nagyobb számban COUNT speciális padló, amely eltávolítja az összes vonalak, amelyek a túlzott vagy NULL adatok ezen a területen. KÜLÖNÁLLÓ nem alkalmazható c COUNT (*), mert nincs hatással egy jól kidolgozott és karbantartja az adatbázist. Ebben az adatbázisban, nem kell ilyen vonalak, hogy lenne egy teljesen üres, vagy másolatok (az első nem tartalmaz adatokat, és az utolsó teljesen redundáns). Ha a másik viszont, még mindig teljesen üres vagy felesleges sor, akkor valószínűleg nem akarja számolni elrejteni, hogy információt.
FORDULÓ ismétli az összesítő függvények
Összesített funkciókat is (a legtöbb implementáció) minden érvét, amely elé kerül a neve a területen, mint a különálló, de ennek az ellenkezője - tartalmazzák ismétli. ANSI technikailag nem teszi lehetővé, hogy a gróf, de sok implementáció pihenni ezt a korlátozást.
* Amíg egyetlen érv, hogy magában foglalja a NULL értékeket, és ez csak akkor kell használni COUNT; más funkciókat COUNT figyelmen kívül hagyja NULL értékek minden esetben. A következő parancs száma (COUNT) száma nem-NULL értékeket a minősítés területén a Vevők táblában (beleértve ismétlések):
Felépített egy skalár kifejezést
Mielőtt, amivel összesítő függvények egyetlen mezőket érvként. Ön is használja összesítő függvények érvekkel állnak skalár kifejezés magában foglal egy vagy több mezőt. (Ha ezt a KÜLÖNÁLLÓ nem engedélyezett.) Tegyük fel, hogy a rendelések tábla egy oszlop, amely tárolja az előző fennálló egyenleg (mező blnc) az egyes ügyfelek. Meg kell találni az aktuális egyenleget, a mellett a beszerzések összege az előző egyensúlyt. Megtalálható a legkiválóbb mérleg az alábbiak szerint:
Mindegyik sor az asztalra, ezt a kérést fogják hajtani, és blnc amt ehhez az ügyfélhez, és kiválasztani a legnagyobb érték, amely azt állapítja meg. Persze, amíg az ügyfelek több megrendelést, a fennmaradó összeget külön értékeljük az egyes sorrendben. Elrendelheti egy későbbi időpontban lesz a legnagyobb fennálló egyensúlyt. Egyébként a régi egyensúlyt kell kiválasztani a fenti lekérdezés.
Tény, hogy van egy nagy számú helyzetek SQL ahol használhatja kifejezést skaláris mezőkhöz, vagy ehelyett meglátja ezt a 7. fejezetben.
GROUP BY záradék
A GROUP BY záradék lehetővé teszi, hogy meghatározza egy részét az értékek egy adott területen szempontjából a másik nem, és alkalmazza az aggregált funkciók egy részét. Ez adja meg a lehetőséget, hogy összekapcsolják mezők és összesítő függvények egy mondatban SELECT. Tegyük fel például, meg akarja találni a legnagyobb összeget a nyereséget szerzett minden eladó. Tudod, hogy külön kérelmet minden egyes őket MAX (AMT) a Rendelések tábla minden egyes értékére szex SNUM. GROUP BY, ugyanakkor lehetővé teszi, hogy őket mind egy-egy parancsot:
GROUP BY vonatkozik összesítő függvények függetlenül sorozatba segítségével meghatároztuk az értékeket a területen általában. Ebben az esetben, ahol az egyes csoportokhoz az összes sort ugyanazt az értéket a padló SNUM, és a MAX funkció külön-külön alkalmazott minden egyes csoportban. Ez a mező értékét, amelyre a GROUP BY, van, definíció szerint, csak egy érték a kimeneti csoport, mivel ez teszi az összesítő függvény. Az eredmény az, hogy kompatibilitás lehetővé teszi egységek és a mezők ily módon kombináljuk.
Ön is használja a GROUP BY több területen. Perfection fenti példa is, hogy azt szeretnénk, hogy a legnagyobb mennyiségű vásárlások által kapott minden eladó minden nap. Ehhez akkor kell csoportosítani asztal rendezés dátum az eladók és alkalmazni MAX funkció minden ilyen csoport, mint ez:
Természetesen az üres csoport, a nap, amikor a jelenlegi kereskedő nem volt megrendeléseket nem jelenik meg a kimeneten.
HAVING
Tegyük fel, hogy az előző példában, akkor azt szeretné, hogy csak a legnagyobb vásárlások összegét, amelynek értéke meghaladja a $ 3000.00. Nem tudja használni összesítő függvények egy mondatot, ahol (ha nem használ segédlekérdezésként, lásd később), mert a predikátumok értékelik szempontjából egy sorban, és az összesített funkciók szempontjából értékelik csoportok sorban. Ez azt jelenti, hogy nem lehet tenni valamit, mint ez:
Ez az eltérés a szigorú értelmezését ANSI. Látni, hogy a maximális költsége akvizíció több mint $ 3000.00, akkor használja a HAVING. HAVING meghatározza a kritériumokat, amelyek segítségével az egyes csoportok az O, csakúgy, mint a WHERE záradék teszi az egyes vonalak.
Érvek a HAVING ugyanazokat a szabályokat követik, mint a mondat SELECT álló csapatok segítségével GROUP BY. Azt kellett volna ugyanazt az értéket a kimeneti csoport. A következő parancs tilos:
Odate mező nem okozott vagyontárgyra, mert lehet, hogy (és van is) több mint egy érték kimeneti csoport. Annak elkerülése érdekében, egy ilyen helyzet, amikor a mondat csak utalnak egységek és kijelölt mező GROUP BY. Van egy jobb módja, ha a fenti lekérdezés (a kimenet ábra 6.8):
DO nem kapcsolódik EGYSÉGEK
A szigorú értelmezése az ANSI SQL, nem tudja használni a gép egységet. Tegyük fel, hogy szeretnénk megtudni, milyen nap volt a legmagasabb összeg felvásárlások. Ha megpróbálja ezt, akkor a csapat valószínűleg el kell utasítani. (Egyes megvalósítások nem írja elő ezt a korlátozást, ami azért előnyös, mert a beágyazott aggregátumok nagyon hasznos lehet, még akkor is, ha azok kissé problémás.) A fenti parancs, például SUM kell alkalmazni minden egyes csoport szex Odate és MAX minden csoportban, hogy egyetlen érték minden csoport számára. Azonban egy GROUP BY záradék azt jelenti, hogy kell lennie egy sort nyomtat az egyes csoportos szex Odate.
Ön most a igényeket némileg eltérő. Az a képesség, hogy megkapja, nem csak súlyt helyeznek, nagyon erős. Ez azt jelenti, hogy nem kell nézni ki bizonyos információkat, ha megfogalmazni a lekérdezést, hogy értem. A lekérdezés kapsz percről percre eredményt, míg az asztal teljes vagy átlagos érték jó lesz csak bizonyos idő után annak módosítását. Ez nem azt sugallják, hogy az összesítő függvények teljesen helyettesítheti a szükséges követni információért, mint ebben a példában.
Használhatja ezeket egységek értékei az egyes csoportok kínálnak GROUP BY. Ezeknek a csoportoknak a mező értéke egészét, és tartózkodjon a többi csoportot, amelyek a mező értéke egészét. Ugyanakkor, még mindig használatban predikátumok, hogy melyik sorban az összesítő függvényt kell alkalmazni. Együttesen ezek a funkciók lehetővé teszik, hogy készítsenek egységeket alapul nagyon specifikus részhalmazainak értékek terén. Akkor meg tudja határozni a további feltételek kizárását bizonyos csoportjainak eredmények azzal a javaslattal, birtoklás.
Most. Ha lesz egy szakértő nagyszámú kérelem termel értéket, megmutatjuk a 7. fejezetben néhány dolog, amit tehetünk, az értékeket, amelyeket termel.