Sobes.tech
Middle

Mi a különbség a RANK és a DENSE_RANK között?

sobes.tech MI

Válasz az MI-től

A RANK és DENSE_RANK SQL ablakfüggvények, amelyek sorokat rendelnek a megadott ablakon belül, de különböznek abban, hogyan kezelik az egyenlő értékeket (azaz a holtversenyeket).

  • RANK(): Ugyanazokat az értékeket ugyanazzal a ranggal látja el, de kihagyja a következő rangokat. Például, ha két sor osztja az első helyet, mindkettő 1-es rangot kap, a következő sor pedig 3-as rangot, mert a 2 kihagyásra kerül.

  • DENSE_RANK(): Szintén ugyanazokat az értékeket ugyanazzal a ranggal látja el, de nem hagy ki rangokat. Ugyanabban a példában, két sor 1-es ranggal, a következő 2-es rangot kap.

Példa:

Érték RANK() DENSE_RANK()
100 1 1
100 1 1
90 3 2
80 4 3

Így a DENSE_RANK() sűrű rangokat ad, rangsorok között nincs kihagyás, míg a RANK() figyelembe veszi a kihagyásokat az egyenlőségek esetén.