5 4 7 csoport kifejezés használata
Magyarázat. Fogalmi szempontból az üzemeltető GROUP BY (csoport) átrendezi a táblázat mutatja mondat, a szakaszok, illetve csoportok úgy, hogy minden csoport minden sorban azonos értékét meghatározott területen a mondat GROUP BY. Ez persze nem jelenti azt, hogy a táblázat fizikailag átrendeződik az adatbázisban. Ebben a példában, a szöveg tábla SP vannak csoportosítva úgy, hogy az egyik csoport tartalmazza az összes húrok részek P1, a másik-minden vonal a rész P2, és így tovább. D. Ezután mindegyik csoport átrendeződik a táblázatot ahelyett, hogy minden egyes sorában az eredeti táblázatot használjuk SELECT kifejezés. Minden kifejezés a mondat SELECT el kell fogadnia egy értéket a csoport, azaz a. E. Ez lehet akár a meghatározott területen a mondat GROUP BY, vagy egy aritmetikai kifejezést, beleértve a területen, állandó vagy függvény, például SUM, ami működik, az összes értékei ezen a területen egy csoportot, és ezeket az értékeket csökkenti az egyetlen érték.
A táblázat sorai lehet csoportosítani bármilyen kombinációja a mezők. 5.6 fejezet egy példa szemlélteti a csoportosulás több mezőt. Megjegyezzük, hogy a GROUP BY záradék nem jelenti azt, ORDER BY (sorrendben). Annak érdekében, hogy a megrendelő a példa eredményét, cikkszáma, meg kell határoznia az ORDER BY záradék helyiségekről kifejezés után GROUP BY. Ha a mező, amelyen az értékeket a csoportosítást végezzük, tartalmaz-e bármilyen null értékek, amelyek mindegyike ad okot, hogy egy külön csoportot.
5.4.8. Felhasználása, ahol a GROUP BY záradék
Ki, minden egyes szállított részleteit annak számát és a teljes összeget a szállítások kivételével szállítások szállító S1:
SELECT NOMER_DETALI, SUM (NUMBER)
AHOL NOMER_POSTAVSCHIKA = 'S1'
GROUP BY NOMER_DETALI;
Sorok, amelyek nem felelnek meg a WHERE kifejezést, eltávolítani, amíg lesz olyan csoportosulás.
5.4.9. USE annak,
Adj ki számot minden alkatrész által szállított több szolgáltatóval (ugyanaz például a 5.2.5).
GROUP BY NOMER_DETALI
RENDELKEZŐ COUNT (*)> 1;
RENDELKEZŐ kifejezés ugyanazt a szerepet játssza a csoportok és WHERE kifejezést sorokat. (Természetesen, ha a kifejezés van megadva RENDELKEZŐ, meg kell határozni, és a feltételek GROUP BY). Más szóval, a felhasznált kizárni csoportokat, mint ahogy WHERE történő kizárására sor. Az expresszió HAVING el kell fogadnia egy értéket a csoportban.
A példa 5.2.5 Kimutatták, hogy ez a lekérdezés kiszerelhető nélkül GROUP BY (anélkül) egy korrelált allekérdezés. Azonban a példa 5.2.5 valóban alapján némileg eltérő felfogása kapcsolatos logika meghatározó a választ erre a kérdésre. Az is lehetséges egy lekérdezést, lényegében ugyanaz a logika, mint a kiviteli alak GROUP BY / RENDELKEZŐ, de anélkül, hogy explicit használata kifejezések GROUP BY és miután záradékok általában:
SELECT DISTINCT NOMER_DETALI
AHOL SPY.NOMER_DETALI = SPX.HOMEP_DETALI);
Egy további kiviteli alak, amelyben használata helyett SPX táblázat P, valószínűleg több egyértelmű:
(SELECT COUNT (NOMER_POSTAVSCHIKA)
AHOL NOMER_DETALI = P. NOMER_DETALI);
Egy másik készítmény használatát foglalja magában EXISTS:
HOL SPX. NOMER_DETALI = R. NOMER_DETALI
HOL SPY. NOMER_DETALI = R. NOMER_DETALI
És a Spy. NOMER_POSTAVSCHIK = SPX. NOMER_
Mindezek az alternatívák, bizonyos tekintetben előnyös kiviteli alak GROUP BY / SZEM annak a ténynek köszönhető, hogy azok legalább logikusan jobb megértése, valamint különösen nem igénylik az ilyen kiegészítő nyelvi konstrukciókat. célkitűzéseit az eredeti megfogalmazás természetes nyelven - „Get rész számot minden szállított több mint egy szállító” - Kétségtelen, hogy nem egyértelmű, hogy a csoportosítás maga az, ami szükséges, hogy erre a kérdésre válaszolni, és benne, valóban, nincs szükség. Az sem azonnal nyilvánvaló, hogy a szükséges feltétele a RENDELKEZŐ, de nem az állapot, amikor. Opció GROUP BY / amelyek több mint egy eljárási utasítást a probléma megoldására, mint a tiszta logikai megfogalmazása annak lények. Másrészt, nem lehet tagadni azt a tényt, hogy a változat a GROUP BY-/ amelynek több lakonikus. Továbbá, viszont néhány hasonló feladatokat általános jellegű, amelyre GROUP BY és miután egyszerűen nem megfelelőek, ezért érdemes ezeket használni az alternatív megközelítések. Egy példa erre a problémára bemutatott gyakorlat 5.24.
Végül GROUP BY tervek általában súlyos korlátozás - csak akkor működik egy szinten. Lehetetlen osztani minden egyes ilyen csoportok a csoport egy alacsonyabb szintű, és így tovább. D., majd alkalmazni egy bizonyos szabványos funkció, például a SUM vagy AVG az egyes csoportokat szinten 16.
5.5. SZÖVETSÉG
Union Két halmaz a készlet minden eleme tartozó bármelyik vagy mindkét eredeti készletek. Mivel az arány beállítása (beállítva vonalak), lehet építeni kombinálva két kapcsolatokat. Az eredmény az lesz a szett tartalma az összes sorban szereplő bármelyik vagy mindkét eredeti kapcsolatot. Ha azonban ez az eredmény önmagában kell lennie más módon, ahelyett, hogy egyszerűen heterogén keveréke vonósok, két eredeti kapcsolat legyen kompatibilis kombinálni. Informálisan elmondható, hogy mindkét szempontból vonalak azonosnak kell lennie a „forma”. Ami SQL, akkor két kompatibilis táblázatkezelő szövetség (UNION operátor lehet alkalmazni őket), akkor és csak akkor, ha:
a) ugyanaz a oszlopok száma, például m;
b) minden i (i = 1,2 m) i-edik oszlop első asztal és az i-edik oszlopa a második táblázat pontosan ugyanazokat az adatokat típusú .;
- ha az adattípus-DECIMÁLIS (p, q), akkor p kell lennie;
ugyanaz a két oszlop és q meg kell egyeznie mindkét oszlop;
- ha a adat- típusa • CHAR (n), akkor n kell lennie. ugyanaz a két oszlop;
- ha az adattípus-VARCHAR, (n), akkor n ugyanannak kell lennie mindkét oszlop;
- Ha a NOT NULL van megadva minden ilyen oszlopok, ugyanazzal a specifikációval kell egy másik oszlopra.
5.5.1. Lekérdezések használata szükséges UNION
Ahhoz, hogy kiadja a cikkszámokat, amelynek súlya 16 font vagy több elérhető szolgáltató S2 (vagy mindkettő).
Magyarázat. SELECT záradék használt kifejezés, hogy milyen sorrendben vannak írva, kivéve a SELECT kifejezés is, amely alkalmazza a HAVING és ORDER BY, ha van ilyen. Ebben a példában tehát elképzelhető, hogy az eredmény az alábbiak szerint.
1.. Ennek eredményeként a feldolgozás FROM záradék létrehoz egy új táblát, amely a Descartes-szorzat a P és SP táblázatokat.
2. HOL. Az 1. lépésben az összes sor ki van zárva eredmény nem kielégítő bejegyzés WHERE. Ebben a példában a kizárt tételek nem tesznek eleget az állítmány:
R.NOMER-részletek és R.TSVET SP.HOMEP_DETALI = IN ( 'vörös', 'kék') ÉS SP.KOAH5ECTBO> 200.
3. GROUP BY. A 2. lépés után van csoportosítva mezőértékek (mezők) megjelölt kifejezés GROUP BY. A mi példánkban ez a mező R.NOMER-PARTS R.VES és R.TSVET. Megjegyzés. Elméletileg, mivel a csoportosított mezőt elegendő lenne, hogy csak R.NOMER-részletek, mint R.VES és R.TSVET egyedileg határozzuk meg cikkszáma. Azonban DB2 rendszer nem ismeri ezt a tényt az utolsó, és ha R.VES R.TSVET és elhagytuk a mondat GROUP BY, valamilyen hiba, mivel ezek szerepelnek a SELECT kifejezés. A fő probléma az, hogy a DB2 rendszer nem támogatja az elsődleges kulcsokat. Lásd. Függelék
4. Rendelkeznek. Csoportokat, amelyek nem felelnek meg a feltételt SUM (száma)> 350 kiszorulnak a kapott eredményt a 3. lépésben.
5. SELECT. Minden csoport lépésben kapott 4 olvasni generál egy sort az eredmény. Először is, a csoport részére cikkszáma, súlya, színe és a maximális ellátás. Másodszor, a súlya alakítjuk gramm. Harmadszor, a megfelelő helyeken kapott sorok kerülnek beillesztésre két sztring konstansok „súlya grammban =” és a „maximális térfogata szállítási =”.
6. ORDER BY. 5. lépés után rendelik összhangban leírás ORDER BY kifejezést, hogy a végső eredményt.
Persze, a kérelmet meglehetősen bonyolult felett, de képzeljük el, mi ez a munka. Rendszeres program például a nyelv COBOL, amely elvégzi ugyanazt a munkát, akkor rúghat kilenc oldalas, míg csak kilenc vonalak megadott. Ebben az esetben a szükséges munkát annak érdekében, hogy ez a program működőképessé vált, sokkal több, mint szükséges megfogalmazni a lekérdezést SQL nyelv a megtestesítője. A legtöbb kérelmet a gyakorlatban természetesen minden esetben sokkal könnyebb, mint vele.
GYAKORLATOK
Csakúgy, mint az előző fejezetben. Az összes alábbi gyakorlatok alapján alapján a szállító-alkatrész-gyártási adatok (lásd. A gyakorlatok a 3. fejezetben). Mindegyikben a felvenni kívánt a SELECT egy lekérdezés, kivéve a testmozgás 15-18 és 26. Az egyszerűség kedvéért megismételni a szerkezet a figyelembe vett adatbázis:
S (NOMER_POSTAVSCHIKA, NAME, állam, város)
P (NOMER_DETALI, név, szín, súly, város)
J (NOMER_IZDELIYA, a nevét és helyét)
SPJ (NOMER_POSTAVSCHIKA, NOMER_DETALI, NOMER_IZDELIYA,
Az egyes részekben a gyakorlatok, amelyek megközelítőleg érdekében a növekvő komplexitás. Meg kell próbálnia, hogy nem legalább néhány tüdő gyakorlatok az egyes csoportokban. Gyakorlatok 12-18 meglehetősen nehéz.
5.1. Adja ki a nevét, termékek, amelyeket szállított alkatrész beszállító S1.
5.2. Issue szín által szállított alkatrészek szállító S1.
5.3. Sorolja fel a szállított bármely termék Londonban.
5.4. Kiad egy számot használó termékek legalább egy rész által szállított szállítóval S1.
5.5. Kiadja a beszállítók száma, akik a kínálat legalább egy része által szolgáltatott legalább egy szállító, amely ellátja legalább egy piros pont.
5.6. Kiadja a beszállítók száma, akik a feltétellel, hogy kevesebb, mint a szállító S1.
5.7. Kiadja a beszállítók száma, akik a kínálat alkatrészek bármilyen termék részét P1 nagyobb mennyiségben, mint az átlagos kínálati mennyisége P1 részletek erről a termékről. Megjegyzés. Ebben a gyakorlatban, akkor kell használni a beépített függvény az AVG.
5.8. Ismételjük 5.3 és használja a határozatot hoztak.
5.9. Ismételjük 5.4 és használja a határozatot hoztak.
5.10. Sorolja fel a termékeket, amelyek nem hoznak semmilyen piros alkatrész beszállító Londonban.
5.11. Sorolja fel a termékeket, amelyek részleteit a szállító szállít S1.
5.12. Sorolja fel a szállított valamennyi termék Londonban.
5.13. Kiadja a beszállítók száma, akik a kínálat ugyanazt a tételt az összes termék.
5.14. Sorolja fel a termékeket, amelyek a kínálat legalább minden alkatrész ről S1.
A következő négy gyakorlatok (5,15-5,18), konvertálja a megadott SQL SELECT nyelven vissza az annak megfelelő nemzeti nyelvén.
5.15. SELECT DISTINCT NOMER_IZDELIYA
HOL NEM létezik
AHOL SPJY.NOMER_IZDELIYA = SPJX. NOMER_
lapszámozásának kiadott végső dokumentum más lesz. cikk jelenik meg, és a kiadó. A hivatkozások címsor kellene. annotált C ++ referencia kézikönyv. Reading, Mass: Addison -WesleyPublishingCompany. Inc. Kunz, J. C. M. J. Clayton, és.
20Nar49; AF11777. Helene Weigel Brecht (W), Barbara Brecht. PublishingCompany. munkáltató fejében. 0 251pr50; 11150R60. West PublishingCompany E jogászai Szövetkezet PublishingCompany. Jr. 0 17NovV9; 13R473. Addison Gallery of American Art.
és P. B. Galvin - Operációs rendszer Concepts - Addison -WesleyPublishingCompany. A. S. Godbole - Operációs rendszer - Tata McGraw. A Első természetesen a matematikai statisztika, AddisonWesleyPublishingCompany. 1973 4. B.L.Van der Waerden, Matematikai.
u Penulis Sears, Francis W. Penerbit Kaliforniában. Addison -WesleyPublishingCompany Tahun 1982 Jumlah 1 eksemplar Subyek. f Penulis Feynman, Richard P. Penerbit Kaliforniában. Addison -WesleyPublishingCompany Tahun 1963 Jumlah 4 eksemplar Subyek.