Я хочу написать свою собственную скалярную функцию SQL, которая вычисляет среднее значение между точками данных одного столбца по переменному количеству строк на основе второго столбца. Я представляю, как эта функция выглядит примерно так: WINDOWMEAN(data, mileage, 100)
. Это вычислит среднее значение всех data
по строкам, где mileage
находится в пределах 100 миль от текущей строки.
Пример:
| data | mileage |
| 10 | 1000 |
| 15 | 1009 |
| 20 | 1056 |
| 16 | 1098 |
| 13 | 1130 |
| 14 | 1200 |
С таким запросом, как SELECT WINDOWMEAN(data, mileage, 100) AS a FROM t
, я бы ожидал:
| data | mileage | a |
| 10 | 1000 | 10 |
| 15 | 1009 | 12.5 |
| 20 | 1056 | 15 |
| 16 | 1098 | 15.25|
| 13 | 1130 | 16.33|
| 14 | 1200 | 13.5 |
a
рассчитывается для каждой строки как среднее значение всех строк в пределах 100 миль от mileage
, предшествующих текущей строке.
Где я застреваю, так это в том, как получить доступ к предыдущим строкам в пользовательской функции SQL. Я не уверен, что то, что я пытаюсь сделать, возможно, потому что мне еще предстоит найти документацию для доступа к другим строкам таким образом.
Независимо от того, специфично ли это решение или нет, есть ли способ получить доступ к предыдущим строкам в пользовательской скалярной функции SQL?
(можно предположить, что строки упорядочены по пробегу)
avg()
с соответствующей рамкой диапазона. - person Shawn   schedule 04.10.2019