Referencia - A - SQL (DML), mint kimeneti n vonalak az egyes csoportok
Ahhoz, hogy megoldja ezt a problémát, meg kell végezni egy partíciót az egész készlet sorok a csoport rendezéséhez a szükséges kritériumok (dátum szerint vagy az eladások száma) az egyes csoportokon belül, és ezt követően válassza ki a kívánt sorok számát az első sorban az egyes csoportokban.
Tekintsük a következő problémát:
Visszavonja a termék táblázatban három modell a legalacsonyabb számát mindegyik csoportban, azzal jellemezve, a termék típusától.
Ie Ez megköveteli a számítógéphez, hogy a 3, 3 laptopok és 3 nyomtató számok kisebb számban más modellek a csoportban. Mivel a modell szám egyedülálló a termék táblázatban. akkor nincs probléma, a másolatokat. Vegyük észre, hogy két példányban a probléma nem a fő, de szükség kiigazítás a készítmény.
„Classic” megoldás
Ez a döntés alapja a sorszámozás algoritmus által visszaadott lekérdezés. Ie Mi számozza a sorokat, majd válassza ki közülük azok, amelyek szám kevesebb, mint egy adott számot. Miután a említett algoritmus a lekérdezés, amely felsorolja megrendelt emelkedő típusszám a teljes készlet a táblázat sorai a felírható:
Csak, hogy megoldja a problémát nem kell felsorolni a teljes készlet, és minden csoport külön-külön. Ezt könnyen elérhetjük, ha a táblák összekapcsolási feltétel további feltétel, hogy a terméktípusok, és adjunk hozzá csoportosítása típus szerint:
A körülményeknek megfelelően három feladatot korlátozza a sorok számát az egyes csoportokban. Sőt, már megoldotta a problémát. Már csak azt, hogy adjunk a gyártó (készítő), hogy is lehet tenni a különböző módon. Például, ismét össze a modell számát a fenti lekérdezés a termék asztalra, vagy használja a korrelált allekérdezés a SELECT utasításban. Képzési célokra, így mindkét megközelítés.
1. vegyület
Itt már megszűnt a plusz oszlop num, amelyet már felhasználtak demonstrációs célokra, mert nem szeretnénk kiírni a sor számát.
2. A segédlekérdezés a SELECT záradék
Allekérdezés SELECT mondat akkor megengedett, ha visszatér csak egy értéket mindegyik sor a fő kérdés. Ez az állapot végeztünk, mert választunk egy modell gyártója, amely továbbítja a fő kérdés egy egyedi (elsődleges kulcs Termék táblázatot).
A döntés alapján a rangsorban funkció
Hogy oldja meg a problémát, akkor használja ezt a funkciót RANK. Ez a funkció lehetővé teszi, hogy szét a visszaadott sorok a lekérdezést a csoportok és kiszámítja a rangot minden sorban a csoport egy előre meghatározott válogatás. Ahogy rendezéshez egyedi modellszám, a rang valóban lesz ugyanaz, mint a sor számát a csoportban. Így, az oldatot
Tulajdonképpen mindent elkövetnek segédlekérdezésként. A külső kereslet csak arra szolgál, hogy korlátozza a kiválasztási három modell minden csoportnak. Más szóval, hagyjuk csak azokat a sorokat, amelyeknek rang nem haladja meg a három.
Gazdaságilag nem igaz. Azonban nézzük meg részletesebben a szerkezet
Ajánlat partíciót típusú csoportot képez; az egyik csoportba esünk vonal, amely ugyanazt a típusú termék (azonos értéket az oszlopban típus).
Ajánlat ORDER BY modell meghatározza a rendezési csoport sorainak (emelkedő modellszám).
Végül, RANK () rendel rangot minden sor a csoport alapján egy előre meghatározott osztályozás, azaz Az első sorban a csoport kap egy rangot 1. A következőkben, ha van egy kiváló modell számát, 2. helyezett, stb Mint már mondtam, mert a modell szám egyedi, minden sorban a csoport lesz más rangot. Ellenkező esetben, vonalak az azonos típusszám ugyanaz lenne a rangsorban.
Részletes leírás a rangsor funkciók túlmutat ezt a cikket, de talán írok valami hasonlót SQL bemutatója.
Gyakorlatok SELECT (értékelés szakaszában)