Перейти к основному содержимому

percentile_disc

percentile_disc

Описание

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

Эта функция поддерживается начиная с версии 1.5.0.

Синтаксис

PERCENTILE_DISC (expr, percentile) 

Параметры

  • expr: столбец, для которого вы хотите вычислить значение процентиля. Столбец может быть любого типа данных, который можно сортировать.
  • percentile: процентиль значения, которое вы хотите найти. Это должно быть константное число с плавающей точкой между 0 и 1. Например, если вы хотите найти медианное значение, установите этот параметр в 0.5. Если вы хотите найти значение на 70-м процентиле, укажите 0.7.

Возвращаемое значение

Тип данных возвращаемого значения такой же, как у expr.

Примечания по использованию

NULL значения игнорируются при вычислении.

Примеры

Создайте таблицу exam и вставьте данные в эту таблицу.

CREATE TABLE exam (
subject STRING,
score INT
)
DISTRIBUTED BY HASH(`subject`);

INSERT INTO exam VALUES
('chemistry',80),
('chemistry',100),
('chemistry',null),
('math',60),
('math',70),
('math',85),
('physics',75),
('physics',80),
('physics',85),
('physics',99);
select * from exam order by subject;
+-----------+-------+
| subject | score |
+-----------+-------+
| chemistry | 80 |
| chemistry | 100 |
| chemistry | NULL |
| math | 60 |
| math | 70 |
| math | 85 |
| physics | 75 |
| physics | 80 |
| physics | 85 |
| physics | 99 |
+-----------+-------+

Вычислите медиану для каждого предмета.

select subject, percentile_disc(score, 0.5)
from exam group by subject;

Результат

+-----------+-----------------------------+
| subject | percentile_disc(score, 0.5) |
+-----------+-----------------------------+
| chemistry | 100 |
| math | 70 |
| physics | 85 |
+-----------+-----------------------------+