Я хочу написать свою собственную скалярную функцию 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?
(могу предположить, что ряды упорядочены по пробегу)