MySQL MariaDB

Функция на прозореца на MySQL RANK

Функция на прозореца на MySQL RANK
Методът за класиране разпределя ранг вътре в дяла на резултата от даден набор на всеки ред. Рангът на реда се определя чрез увеличаване на една цифра от редици от реда, който го предшества. MySQL използва функция за класиране, която помага на един ранг на ред в дял на схема. В MySQL методите за оценяване наистина са полу-част от метода на прозореца. Ще използвате методите за оценяване в MySQL с някоя от следващите клаузи:

Общо има три вида функции за класиране, както следва:

MySQL RANK ():

Това е метод, който дава ранг вътре в дял или масив от резултати с пропуски на ред. Хронологично, класирането на редовете не се разпределя през цялото време (т.е.д., увеличен с един от предишния ред). Дори когато имате равенство между няколко от стойностите, в този момент помощната програма rank () прилага същото класиране към него. Също така, предишният му ранг плюс цифра от повтарящи се числа може да бъде последващият номер на ранга.

За да разберете класирането, отворете обвивката на клиента на командния ред и въведете паролата си за MySQL, за да започнете да я използвате.

Да приемем, че имаме таблица по-долу, наречена „същото“ в базата данни „данни“, с някои записи.

>> ИЗБЕРЕТЕ * ОТ данни.същото;

Пример 01: Прост RANK ()

По-долу използвахме функцията Rank в рамките на командата SELECT. Тази заявка избира колоната „id“ от таблицата „същото“, докато я класира според колоната „id“. Както можете да видите, ние дадохме име на колоната за класиране, което е „my_rank“. Класирането вече ще се съхранява в тази колона, както е показано по-долу.

>> ИЗБЕРЕТЕ id, RANK () OVER (ORDER BY id) my_rank ОТ fata.същото;

Пример 02: RANK () Използване на PARTITION

Да приемем друга таблица „служител“ в база данни „данни“ със следните записи. Нека имаме още един екземпляр, който разделя набора от резултати на сегменти.

>> ИЗБЕРЕТЕ * ОТ данни.служител;

За да се използва методът RANK (), следващата инструкция присвоява ранга на всеки ред и разделя набора от резултати на дялове, използвайки „Възраст“ и ги сортира в зависимост от „Заплата“. Тази заявка извлича всички записи, докато се класира в колона “new_rank”. Можете да видите резултатите от тази заявка по-долу. Той е сортирал таблицата според „Заплата“ и я е разделил според „Възраст“.

>> ИЗБЕРЕТЕ *, РАНГИРАЙТЕ () НАД (РАЗПРЕДЕЛЕНИЕ ПО ВЪЗРАСТ ПОРЪЧКА ПО Заплата) new_rank ОТ данните.служител;

MySQL DENSE_Rank ():

Това е функционалност, където, без никакви дупки, определя ранг на всеки ред в дивизия или набор от резултати. Класирането на редовете най-често се разпределя в последователен ред. Понякога имате обвързване между стойностите и следователно то се присвоява на точния ранг от плътния ранг, а последващият му ранг е следващото следващо число.

Пример 01: Обикновено DENSE_RANK ()

Да предположим, че имаме таблица „служител“ и трябва да подредите колоните на таблицата „Име“ и „Заплата“ според колона „Име“. Създадохме нова колона “dens_Rank”, за да съхраним рейтинга на записите в нея. При изпълнение на заявката по-долу имаме следните резултати с различно класиране спрямо всички стойности.

>> ИЗБЕРЕТЕ Име, Заплата, DENSE_RANK () НАД (ПОРЪЧКА ПО Име) den_rank ОТ данни.служител;

Пример 02: DENSE_RANK () Използване на PARTITION

Нека видим друг екземпляр, който разделя резултата, зададен на сегменти. Съгласно синтаксиса по-долу, полученият набор, разделен от фразата PARTITION BY, се връща от израза FROM и методът DENSE_RANK () след това се размазва към всяка секция, като се използва колоната „Име“. След това за всеки сегмент фразата ORDER BY размазва, за да се определи императивът на редовете, като се използва колоната „Възраст“.

>> ИЗБЕРЕТЕ Име, Възраст, Заплата, DENSE_RANK () НАД (ДЯЛ ПО ИМЕ ПОРЪЧКА ПО Възраст) new_rank ОТ данни.служител;

При изпълнението на горната заявка можете да видите, че имаме много различен резултат в сравнение с метода Single thick_rank () в горния пример. Имаме една и съща повтаряща се стойност за всяка стойност на реда, както можете да видите по-долу. Това е връзката на стойностите на ранга.

MySQL PERCENT_RANK ():

Това наистина е метод за класиране в проценти (сравнителен ранг), който изчислява за редове вътре в дял или колекция от резултати. Този метод връща списък от скала на стойност от нула до 1.

Пример 01: Обикновен PERCENT_RANK ()

Използвайки таблицата „служител“, разгледахме примера на простия метод PERCENT_RANK (). Имаме зададена по-долу заявка за това. Колоната per_rank е генерирана от метода PERCENT_Rank () за класиране на резултата, зададен в процентната форма. Извличаме данните според реда на сортиране в колона „Възраст“ и след това класираме стойностите от тази таблица. Резултатът от заявката за този пример ни даде процентно класиране за стойностите, както е представено на изображението по-долу.

>> ИЗБЕРЕТЕ *, PERCENT_RANK () НАД (ПОРЪЧКА ПО Възраст) per_rank ОТ данни.служител;

Пример 02: PERCENT_RANK () Използване на PARTITION

След като направихме простия пример за PERCENT_RANK (), сега е ред за клаузата „PARTITION BY“. Използваме същата таблица „служител“. Нека да разгледаме още един екземпляр, който разделя набора от резултати на раздели. Даден от синтаксиса по-долу, получената стена на разстояние от израза PARTITION BY се реимбурсира от декларацията FROM, както и методът PERCENT_RANK () след това се използва за класиране на всеки ред от колоната „Име“. На изображението, показано по-долу, можете да видите, че наборът от резултати съдържа само 0 и 1 стойности.

>> ИЗБЕРЕТЕ *, PERCENT_RANK () НАД (ДЕЛЕНЕ ПО ПОРЪЧКА НА ЗАЛАТА ПО ИМЕ) per_rank ОТ данни.служител;

Заключение:

И накрая, направихме и трите функции за класиране на редове, използвани в MySQL, чрез клиентската обвивка на командния ред на MySQL. Също така, ние взехме предвид както простата, така и клаузата PARTITION BY в нашето проучване.

Vulkan за потребители на Linux
С всяко ново поколение графични карти виждаме, че разработчиците на игри преместват границите на графичната вярност и се приближават една крачка до фо...
OpenTTD срещу Simutrans
Създаването на собствена транспортна симулация може да бъде забавно, релаксиращо и изключително примамливо. Ето защо трябва да сте сигурни, че изпробв...
Урок за OpenTTD
OpenTTD е една от най-популярните бизнес симулационни игри там. В тази игра трябва да създадете прекрасен транспортен бизнес. Въпреки това, ще започне...