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)