Если на клетке слона прочтешь надпись «буйвол», не верь глазам своим (К. Прутков).

Функция CUME_DIST в MySQL

2 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...
19 сентября 2019
MySQL. Математические функции
Описание : в этой статье вы узнаете, как использовать функцию CUME_DIST() MySQL для расчета совокупного значения распределения.

 

Обзор функции CUME_DIST() в MySQL

CUME_DIST() является оконной функцией, которая возвращает кумулятивное распределение величины в пределах набора значений. Она представляет количество строк со значениями, меньшими или равными значению этой строки, деленному на общее количество строк.

Возвращаемое значение функции CUME_DIST() больше нуля и меньше или равно единице (0 CUME_DIST()<<= 1). Повторяющиеся значения столбца получают одинаковое значение CUME_DIST().

Ниже показан синтаксис функции CUME_DIST():

CUME_DIST() OVER (
PARTITION BY expr, ...
ORDER BY expr [ASC | DESC], ...
)

 

В этом синтаксисе предложение PARTITION BY  делит набор результатов, возвращаемый предложением FROM, на разделы, к которым применяется функция CUME_DIST().

Предложение ORDER BY определяет логический порядок строк в каждом разделе или весь набор результатов в случае, если PARTITION BY опущен. Функция CUME_DIST() вычисляет совокупную величину распределения каждой строки на основе его заказа в разделе.

Примерная формула функции CUME_DIST() выглядит следующим образом:

ROW_NUMBER() / total_rows

 

Пример функции CUME_DIST() в MySQL

Давайте создадим таблицу с именем scoresс некоторыми образцами данных для демонстрации:

CREATE TABLE scores (
name VARCHAR(20) PRIMARY KEY,
score INT NOT NULL
);

INSERT INTO
scores(name, score)
VALUES
('AndreyEx',76),
('Maria',33),
('Angel',43),
('Destroyer',34),
('Master',55),

 

Следующее утверждение находит совокупное распределение баллов в наборе результатов:

SELECT
name,
score,
ROW_NUMBER() OVER (ORDER BY score) row_num,
CUME_DIST() OVER (ORDER BY score) cume_dist_val
FROM
scores;

 

В этом примере оценка отсортирована в порядке возрастания от 33 до 76. Обратите внимание, что функция ROW_NUMBER() была добавлена ​​для справки.

Так как же функция CUME_DIST() выполняет расчет?

Для первой строки функция находит количество строк в наборе результатов, значение которых меньше или равно 33. Результат равен 1. Затем функция CUME_DIST() делит 1 на общее количество строк, равное 5: 1/5. результат составляет 0,25 или 25%. Та же логика применяется ко второму ряду.

Для третьей строки функция находит количество строк со значениями, меньшими или равными 34. Существует две строки. Тогда результат функции CUME_DIST(): 2/5 = 0,5, что составляет 50%.

Та же логика расчета применяется к остальным строкам.

Из этой статьи вы узнали, как использовать функцию CUME_DIST() MySQL для вычисления кумулятивного распределения значения в наборе значений.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 326

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close