Процент MySql для значений MIN и MAX - PullRequest
0 голосов
/ 29 мая 2018

У нас есть несколько диаграмм, где мы показываем значение AVG вместе со значениями MAX () и MIN ().

Из-за данных, которые они хотят удалить «крайности» для MAX ()и значения MIN ().

Таким образом, запрос относится к каждой записи: вместо простого MIN () показывают, что MIN использует 5% -ный процентиль, а для MAX () - 95% -ный процентиль.

id, parent_cat, id, ВниманиеTime

До сих пор запросы были простыми, что-то вроде:

select AVG(attentionTime) AS time_attention, 
    MAX(attentionTime) AS time_max, 
    MIN(attentionTime) AS time_min 
FROM records_stats 
WHERE parent_cat = {N}

Я не математик, поэтому любая помощь, пытаясь понятьпроблема приветствуется.

процентиль, в терминах базы данных это похоже на: удаление значений, где AVG меньше 5?или убрать тех, кто старше 95?

1 Ответ

0 голосов
/ 29 мая 2018

Вы можете использовать подзапросы, чтобы получить общие минимальные / максимальные значения, а затем в предложении where между ними, чтобы получить среднее значение предполагаемых строк.

Значения процентиля будут в процентах от диапазон против минимальных / максимальных значений.Приведенный ниже запрос применяет проценты к диапазону, а затем масштабирует его до значений, добавляя минимальное значение.

Например, если минимальное значение равно 100, а максимальное значение равно 1000, диапазон равен 900.5% из 900 - это 45, а 95% - это 855, так что вам нужно среднее число строк со значениями от 45 до 855.

select AVG(attentionTime) AS time_attention, 
    (SELECT ((MAX(attentionTime) - MIN(attentionTime)) * 0.95) + MIN(attentionTime) FROM records_stats WHERE parent_cat = {N}) AS time_max, 
    (SELECT ((MAX(attentionTime) - MIN(attentionTime)) * 0.05) + MIN(attentionTime) FROM records_stats WHERE parent_cat = {N}) AS time_min
FROM records_stats 
WHERE parent_cat = {N}
    AND attentionTime BETWEEN time_min AND time_max
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...