Oracle - rang () és DENSE_RANK () (vagy tanulni választani a megfelelő értékeket belül
Kezdjük a RANK () függvénnyel. A magyarázat, hogy mi volt, és amikor ez hasznos lehet a számunkra.
RANK () függvény - ez egy nagyon hasznos funkció, lehetővé teszi számunkra, hogy felsorolni egy sor egyes csoportok értékeit mind a kiválasztott adathalmaz. A legegyszerűbb módja, hogy mutassa ezt egy példa. Ehhez hozzon létre egy kis asztal:
Legyen ez a táblázat tartalmaz néhány számlát személy különböző felhasználók különböző összegeket különböző időpontokban, SM DT.
Most tegyük fel, hogy azt akarjuk, hogy minden felhasználó, hogy maximalizálják a kitett neki megmagyarázni minden alkalommal.
Pontosan az a fajta probléma miatt nagyon könnyű eldönteni RANK () függvényt.
Annak érdekében, hogy elérjék a kívánt eredményt, meg kell a csoport tagjai a fizetés csökkenő sorrendben, mint ez:
kapjuk:
Most csak azt kell csak, hogy a sorrendben az első rekord minden felhasználó számára, akkor a maximális értéket. Ez az, amit meg kell, és RANK () függvényt.
Erre átírjuk a lekérdezés, mint ez:
kapjuk:
Most van egy oszlopot, amely szám az az összege (SM) a csoportokon belül az egyes ember (személy).
Most minden, amit tehetünk, hogy válasszon egy sor azokat a rekordokat, amelyek értéke az új mező RNK = 1.
Megkapjuk a szükséges maximális fiókkészletet minden felhasználó számára:
Most próbálja elmagyarázni, hogy mit csinálunk működik DENSE_RANK (). Tény, hogy ezek a funkciók nem ugyanaz, nagyon kevés kivétellel, kivéve bemutatja példával. Mi módosítja az eredeti készüléket úgy, hogy volt egy csomó ugyanazokat az értékeket a teljes számlát (SM). Így:
Most végre a forgatókönyvet kígyó ismerős, még egy oszlopot, aminek felsorolni a csoport, de csak DENSE_RANK () függvényt:
Azt az eredményt kapjuk:
Most láthatjuk a különbséget a személy a római, itt egyértelmű, hogy a RANK () függvény az alábbi csoportok azonos SM mező értéke van rendelve egy sorszám bejegyzések csoportokon belüli, mivel a funkció DENSE_RANK () hozzá van rendelve a következő sorszámot. Ez a megkülönböztetés hasznos lehet számunkra e probléma megoldásában, ahol ki kell választania nem az első rekord, és mondjuk 3 vagy 4, és itt a feltétel alkalmazásának függvényében változhat attól függően, hogy mit akarunk kapni. Ha azt akarjuk, egy harmadik egyedi értéket bölcs használni DENSE_RANK (). alkalmazásával RANK () ebben az esetben tudjuk a sorozatszámot a kívánt string értéket.