Postgres Расчет среднего значения - интерполяция второго массива - PullRequest
0 голосов
/ 27 марта 2020

Существует ли функция SQL, которая вычисляет значение ИНТЕРПОЛИРОВАННОГО МЕДИАНА для двух связанных массивов?

Например, учитывая набор тестовых оценок, количество студентов учитывается, как показано ниже:

Scores  |  Student_Count  | Cum_Student_Count
--------+-----------------+------------------
18      |   27            |     27
19      |   20            |     47
20      |   15            |     62
21      |   20            |     82
22      |   66            |    148
25      |  112            |    260
30      |  111            |    371
35      |  107            |    478
40      |   92            |    570
45      |  101            |    671
50      |  104            |    775
55      |  105            |    880
60      |   94            |    974
65      |   76            |   1050
70      |   64            |   1114
75      |   86            |   1200

Значение Student_Count складывается до 1200. Средний балл (подлежит вычислению) - это интерполированное значение, где Cum_Student_Count равен 600 (idpoint Cum_Student_Count). Значение находится между 45 и 50 и вычисляется следующим образом:

  1. Рассчитать (600 - 570) / 101 = 0,297 , разницу между средней точкой (600) и ближайшей кумулятивное значение меньше или равно средней точке.
  2. Чтобы вычислить медиану, 46.49 , мы интерполируем 0.297 между 45 и 50, следующие два значения Оценка после 40-балльный уровень и добавьте значение к следующему более высокому баллу: 45 + 0,297 * (50-45)
...