Функция DENSE_RANK в MySQL

Предположим, что у нас есть приведенная ниже таблица с именем База данных

Метод ранжирования присваивает ранг внутри раздела результата набора каждой строке. Ранг строки определяется путем увеличения на одну цифру ранга от строки, которая ей предшествует. MySQL использует функцию ранжирования, которая помогает ранжировать каждую строку в разделе схемы. В MySQL методы оценки действительно являются частью оконного метода. Вы будете использовать методы оценки в MySQL с одним из следующих пунктов:

  • Методы всегда работают с предложением Over ().
  • В хронологическом порядке они присваивают каждой строке ранг.
  • В зависимости от ORDER BY функции присваивают ранг каждой строке.
  • Кажется, что строкам всегда присваивается ранг, начиная с единицы для каждого нового раздела.

Всего существует три вида функций ранжирования, а именно:

  • Классифицировать
  • Плотный ранг
  • Процент ранга

MySQL RANK()

Это метод, который дает ранг внутри раздела или массива результатов с пробелами в каждой строке. Хронологически ранжирование строк не распределяется постоянно (т. Е. Увеличивается на единицу по сравнению с предыдущей строкой). Даже если несколько значений совпадают, в этот момент утилита rank () применяет к нему такое же ранжирование. Кроме того, его предыдущий ранг плюс число повторяющихся чисел может быть последующим ранговым номером.

Чтобы понять ранжирование, откройте клиентскую оболочку командной строки и введите свой пароль MySQL, чтобы начать его использовать.

Предположим, что у нас есть приведенная ниже таблица с именем «same» в базе данных «data» с некоторыми записями.

>> SELECT * FROM data.same;

Предположим, что у нас есть приведенная ниже таблица с именем

Пример 1: Simple RANK()

Ниже мы использовали функцию Rank в команде SELECT. Этот запрос выбирает столбец «id» из таблицы «same» при ранжировании по столбцу «id». Как видите, мы присвоили столбцу ранжирования имя «my_rank». Теперь рейтинг будет храниться в этом столбце, как показано ниже.

>> SELECT id, RANK() OVER( ORDER BY id ) my_rank FROM fata.same;

Ниже мы использовали функцию Rank в команде

Пример 2: RANK () с использованием PARTITION

Предположим, что другая таблица «employee» в базе данных «data» со следующими записями. У нас есть еще один экземпляр, который разбивает набор результатов на сегменты.

>> SELECT * FROM data.employee;

Предположим, что другая таблица

Чтобы использовать метод RANK (), последующая инструкция присваивает рейтинг каждой строке и делит набор результатов на разделы, используя «Возраст» и сортируя их в зависимости от «Зарплата». Этот запрос извлекает все записи при ранжировании в столбце «new_rank». Вы можете увидеть результат этого запроса ниже. Таблица отсортирована по «Зарплате» и разделена по «Возрасту».

>> SELECT *, RANK() OVER(PARTITION BY Age ORDER BY Salary) new_rank FROM data.employee;

Чтобы использовать метод RANK

MySQL DENSE_Rank ()

Это функция, в которой без каких-либо пробелов определяется ранг для каждой строки внутри подразделения или набора результатов. Ранжирование строк чаще всего распределяется в последовательном порядке. Иногда у вас есть связь между значениями, и поэтому ему присваивается точный ранг плотным рангом, а его последующий ранг является следующим последующим числом.

Пример 1: Простой DENSE_RANK ()

Предположим, у нас есть таблица «сотрудник», и вам нужно ранжировать столбцы таблицы «Имя» и «Зарплата» в соответствии с столбцом «Имя». Мы создали новый столбец dens_Rank, чтобы хранить в нем рейтинг записей. После выполнения приведенного ниже запроса у нас есть следующие результаты с разным ранжированием для всех значений.

>> SELECT Name, Salary, DENSE_RANK() OVER( ORDER BY Name ) dens_rank FROM data.employee;

Предположим, у нас есть таблица «сотрудник», и вам нужно ранжировать столбцы таблицы

Пример 2: DENSE_RANK () с использованием PARTITION

Давайте посмотрим на другой пример, который разбивает набор результатов на сегменты. Согласно синтаксису ниже, результирующий набор, разделенный фразой PARTITION BY, возвращается оператором FROM, а затем метод DENSE_RANK () размазывается по каждому разделу с использованием столбца «Name». Затем для каждого сегмента фраза ORDER BY размазывается, чтобы определить императив строк с помощью столбца «Возраст».

>> SELECT Name, Age, Salary, DENSE_RANK() OVER(PARTITION BY Name ORDER BY Age) new_rank FROM data.employee;

После выполнения вышеуказанного запроса вы можете увидеть, что мы получили очень отличный результат по сравнению с методом Single density_rank () в приведенном выше примере. У нас есть одно и то же повторяющееся значение для каждого значения строки, как вы можете видеть ниже. Это связь ранговых ценностей.

У нас есть одно и то же повторяющееся значение для каждого значения строки

MySQL PERCENT_RANK ():

Это действительно метод процентного ранжирования (сравнительного ранжирования), который вычисляет строки внутри раздела или коллекции результатов. Этот метод возвращает список со шкалой значений от нуля до 1.

Пример 1: Простой PERCENT_RANK ()

Используя таблицу «employee», мы рассмотрели пример простого метода PERCENT_RANK (). Для этого у нас есть приведенный ниже запрос. Столбец per_rank был создан методом PERCENT_Rank () для ранжирования набора результатов в процентной форме. Мы получали данные в соответствии с порядком сортировки столбца «Возраст», а затем ранжировали значения из этой таблицы. Результат запроса для этого примера дал нам процентный рейтинг для значений, как показано на изображении ниже.

>> SELECT *, PERCENT_RANK() OVER( ORDER BY Age ) per_rank FROM data.employee;

Используя таблицу «employee», мы рассмотрели пример простого метода

Пример 2: PERCENT_RANK () с использованием PARTITION

После выполнения простого примера с PERCENT_RANK () теперь очередь для предложения «PARTITION BY». Мы использовали ту же таблицу «сотрудник». Давайте еще раз взглянем на другой экземпляр, который разбивает набор результатов на разделы. Исходя из синтаксиса ниже, результирующая установленная стена, отделенная выражением PARTITION BY, возмещается объявлением FROM, а затем используется метод PERCENT_RANK () для ранжирования каждого порядка строк по столбцу «Имя». На изображении, показанном ниже, вы можете видеть, что набор результатов содержит только значения 0 и 1.

>> SELECT *, PERCENT_RANK() OVER(PARTITION BY Salary ORDER BY Name) per_rank FROM data.employee;

После выполнения простого примера с PERCENT_RANK

Заключение

Наконец, мы выполнили все три функции ранжирования для строк, используемых в MySQL, через клиентскую оболочку командной строки MySQL. Кроме того, в нашем исследовании мы приняли во внимание как простые предложения, так и предложения PARTITION BY.

Читайте также:  SQL Between: полное руководство
Оцените статью
bestprogrammer.ru
Добавить комментарий