PERCENTILE_DISC
MariaDB начиная с 10.3.3
Функция окна PERCENTILE_DISC() была впервые представлена в MariaDB 10.3.3.
Синтаксис
Описание
PERCENTILE_DISC() (обозначает дискретный процентиль) — это функция окна, которая возвращает первое значение в наборе, чья упорядоченная позиция равна или больше указанной доли.
В сущности, для нахождения возвращаемого значения выполняется следующая процедура:
- Определить количество строк в разделе.
- Пройти по разделам в порядке, пока не будет найдена первая строка с CUME_DIST() >= значение_аргумента_функции.
Примеры
CREATE TABLE book_rating (name CHAR(30), star_rating TINYINT);
INSERT INTO book_rating VALUES ('Lord of the Ladybirds', 5);
INSERT INTO book_rating VALUES ('Lord of the Ladybirds', 3);
INSERT INTO book_rating VALUES ('Lady of the Flies', 1);
INSERT INTO book_rating VALUES ('Lady of the Flies', 2);
INSERT INTO book_rating VALUES ('Lady of the Flies', 5);
SELECT name, PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc FROM book_rating;
+-----------------------+------+
| name | pc |
+-----------------------+------+
| Lord of the Ladybirds | 3 |
| Lord of the Ladybirds | 3 |
| Lady of the Flies | 2 |
| Lady of the Flies | 2 |
| Lady of the Flies | 2 |
+-----------------------+------+
5 rows in set (0.000 sec)
SELECT name, PERCENTILE_DISC(0) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc FROM book_rating;
+-----------------------+------+
| name | pc |
+-----------------------+------+
| Lord of the Ladybirds | 3 |
| Lord of the Ladybirds | 3 |
| Lady of the Flies | 1 |
| Lady of the Flies | 1 |
| Lady of the Flies | 1 |
+-----------------------+------+
5 rows in set (0.000 sec)
SELECT name, PERCENTILE_DISC(1) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc FROM book_rating;
+-----------------------+------+
| name | pc |
+-----------------------+------+
| Lord of the Ladybirds | 5 |
| Lord of the Ladybirds | 5 |
| Lady of the Flies | 5 |
| Lady of the Flies | 5 |
| Lady of the Flies | 5 |
+-----------------------+------+
5 rows in set (0.000 sec)
SELECT name, PERCENTILE_DISC(0.6) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc FROM book_rating;
+-----------------------+------+
| name | pc |
+-----------------------+------+
| Lord of the Ladybirds | 5 |
| Lord of the Ladybirds | 5 |
| Lady of the Flies | 2 |
| Lady of the Flies | 2 |
| Lady of the Flies | 2 |
+-----------------------+------
См. также
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не просматривается предварительно компанией MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают позицию MariaDB или любой другой стороны.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/percentile_disc/