Возврат нескольких столбцов в одном запросе Postgres - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь создать представление базы данных с Postgres, которое позволяет мне создавать агрегирование средних скоростей бегового круга гонщика. Таблица выглядит следующим образом:

id        racer_id    lap_time  lap_speed   laps_completed  race_id
1         1234           33.5     160              1           1
2         1234           33.5     160              2           1
3         1234           31.25    162              3           1
4         1234           31.25    162              4           1
5         1234           29.5     165              5           1
6         1234           32       161              6           1
7         5678           35       153              1           1
8         5678           35       155              2           1
9         5678           32       158              3           1
10        5678           33.5     160              4           1
11        5678           33       159              5           1
12        5678           32       158              6           1

Используемый мной текущий запрос работает

SELECT id,
       racer_id,
       race_id,
       laps_completed,
       AVG(lap_speed)
       OVER(PARTITION BY race_id ORDER BY laps_completed ROWS BETWEEN 10 PRECEDING AND CURRENT ROW) as lap_average_10
FROM laps
WHERE laps_completed >= 10

Это возвращает что-то вроде этого

  id   |  racer_id | race_id | laps_completed |     lap_average_10
-------+-----------+---------+----------------+------------------------
   418 |    146182 |       2 |             10 |   172.4630000000000000
   417 |    146179 |       2 |             10 |   172.5820000000000000
   455 |    146203 |       2 |             10 |   165.4860000000000000
   456 |    146211 |       2 |             10 |   164.1252500000000000
   438 |    146193 |       2 |             10 |   164.7140000000000000
   444 |    146205 |       2 |             10 |   164.9225000000000000
   445 |    146200 |       2 |             10 |   164.9582857142857143
   446 |    146207 |       2 |             10 |   165.0035000000000000
   443 |    146196 |       2 |             10 |   165.0206666666666667
   432 |    146195 |       2 |             10 |   165.5452000000000000
   431 |    146184 |       2 |             10 |   165.6308181818181818

Что бы я хотел однако, это не только возврат скользящего среднего на 10 кругов, но и скользящих средних на 2, 5 и 20 кругов. Можно ли сделать это одним запросом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...