PERCENTILE_CONT
MariaDB начиная с 10.3.3
Функция окна PERCENTILE_CONT() была впервые представлена в MariaDB 10.3.3.
Синтаксис
Описание
PERCENTILE_CONT() (обозначающее непрерывный процентиль) — это функция окна, которая возвращает значение, соответствующее заданной доле в порядке сортировки. При необходимости, она будет интерполировать между соседними входными значениями.
В основе лежит следующий процесс нахождения возвращаемого значения:
- Получить количество строк в разделе, обозначенное как N
- RN = p*(N-1), где p — аргумент функции PERCENTILE_CONT
- Вычислить FRN (номер строки по полу) и CRN (номер строки по потолку для группы (FRN = floor(RN) и CRN = ceil(RN))
- Получить строки FRN и CRN
- Если (CRN = FRN = RN), то результат — (значение выражения из строки RN)
- В противном случае результат —
- (CRN - RN) * (значение выражения для строки FRN) +
- (RN - FRN) * (значение выражения для строки CRN)
Функция MEDIAN — это частный случай PERCENTILE_CONT, эквивалентный PERCENTILE_CONT(0.5).
Примеры
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_CONT(0.5) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc
FROM book_rating;
+-----------------------+--------------+
| name | pc |
+-----------------------+--------------+
| Lord of the Ladybirds | 4.0000000000 |
| Lord of the Ladybirds | 4.0000000000 |
| Lady of the Flies | 2.0000000000 |
| Lady of the Flies | 2.0000000000 |
| Lady of the Flies | 2.0000000000 |
+-----------------------+--------------+
SELECT name, PERCENTILE_CONT(1) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc
FROM book_rating;
+-----------------------+--------------+
| name | pc |
+-----------------------+--------------+
| Lord of the Ladybirds | 5.0000000000 |
| Lord of the Ladybirds | 5.0000000000 |
| Lady of the Flies | 5.0000000000 |
| Lady of the Flies | 5.0000000000 |
| Lady of the Flies | 5.0000000000 |
+-----------------------+--------------+
SELECT name, PERCENTILE_CONT(0) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc
FROM book_rating;
+-----------------------+--------------+
| name | pc |
+-----------------------+--------------+
| Lord of the Ladybirds | 3.0000000000 |
| Lord of the Ladybirds | 3.0000000000 |
| Lady of the Flies | 1.0000000000 |
| Lady of the Flies | 1.0000000000 |
| Lady of the Flies | 1.0000000000 |
+-----------------------+--------------+
SELECT name, PERCENTILE_CONT(0.6) WITHIN GROUP (ORDER BY star_rating)
OVER (PARTITION BY name) AS pc
FROM book_rating;
+-----------------------+--------------+
| name | pc |
+-----------------------+--------------+
| Lord of the Ladybirds | 4.2000000000 |
| Lord of the Ladybirds | 4.2000000000 |
| Lady of the Flies | 2.6000000000 |
| Lady of the Flies | 2.6000000000 |
| Lady of the Flies | 2.6000000000 |
+-----------------------+--------------+
См. также
-
MEDIAN() — частный случай
PERCENTILE_CONTэквивалентныйPERCENTILE_CONT(0.5)
Содержимое, воспроизведенное на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки со стороны 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_cont/