У меня есть стол, который я собрал для своего фэнтезийного проекта бейсбола.Это выглядит так (это только для первых 24 строк. 24 после - для Команды 2, затем Команды 3 и т. Д.):
+--------+--------------------+--------+------+
| team | name | salary | year |
+--------+--------------------+--------+------+
| Team 1 | Corey Kluber | 47 | 2018 |
| Team 1 | Manny Machado | 46 | 2018 |
| Team 1 | Rhys Hoskins | 28 | 2018 |
| Team 1 | Jose Quintana | 27 | 2018 |
| Team 1 | Buster Posey | 27 | 2018 |
| Team 1 | Edwin Encarnacion | 22 | 2018 |
| Team 1 | Khris Davis | 16 | 2018 |
| Team 1 | Marcus Stroman | 14 | 2018 |
| Team 1 | Ian Kinsler | 7 | 2018 |
| Team 1 | Felipe Vazquez | 6 | 2018 |
| Team 1 | Jeff Samardzija | 4 | 2018 |
| Team 1 | Michael Wacha | 2 | 2018 |
| Team 1 | Ender Inciarte | 2 | 2018 |
| Team 1 | Andrelton Simmons | 2 | 2018 |
| Team 1 | Adam Wainwright | 1 | 2018 |
| Team 1 | Matt Moore | 1 | 2018 |
| Team 1 | Mike Foltynewicz | 1 | 2018 |
| Team 1 | Cam Bedrosian | 1 | 2018 |
| Team 1 | Joe Musgrove | 1 | 2018 |
| Team 1 | Aaron Altherr | 1 | 2018 |
| Team 1 | Trevor Story | 1 | 2018 |
| Team 1 | Marcus Semien | 1 | 2018 |
| Team 1 | Ryon Healy | 1 | 2018 |
| Team 1 | Tim Beckham | 1 | 2018 |
+--------+--------------------+--------+------+
Каждая команда начинает проект с бюджетом$ 260.Я надеюсь увидеть закономерности того, как исторические команды проводили.Таким образом, ожидаемый результат этого будет выглядеть следующим образом:
+--------+--------------------+--------+------+----------------+
| team | name | salary | year | rolling_budget |
+--------+--------------------+--------+------+----------------+
| Team 1 | Corey Kluber | 47 | 2018 | 213 |
| Team 1 | Manny Machado | 46 | 2018 | 167 |
| Team 1 | Rhys Hoskins | 28 | 2018 | 139 |
| Team 1 | Jose Quintana | 27 | 2018 | 112 |
| Team 1 | Buster Posey | 27 | 2018 | 85 |
| Team 1 | Edwin Encarnacion | 22 | 2018 | 63 |
| Team 1 | Khris Davis | 16 | 2018 | 47 |
| Team 1 | Marcus Stroman | 14 | 2018 | 33 |
| Team 1 | Ian Kinsler | 7 | 2018 | 26 |
| Team 1 | Felipe Vazquez | 6 | 2018 | 20 |
| Team 1 | Jeff Samardzija | 4 | 2018 | 16 |
| Team 1 | Michael Wacha | 2 | 2018 | 14 |
| Team 1 | Ender Inciarte | 2 | 2018 | 12 |
| Team 1 | Andrelton Simmons | 2 | 2018 | 10 |
| Team 1 | Adam Wainwright | 1 | 2018 | 9 |
| Team 1 | Matt Moore | 1 | 2018 | 8 |
| Team 1 | Mike Foltynewicz | 1 | 2018 | 7 |
| Team 1 | Cam Bedrosian | 1 | 2018 | 6 |
| Team 1 | Joe Musgrove | 1 | 2018 | 5 |
| Team 1 | Aaron Altherr | 1 | 2018 | 4 |
| Team 1 | Trevor Story | 1 | 2018 | 3 |
| Team 1 | Marcus Semien | 1 | 2018 | 2 |
| Team 1 | Ryon Healy | 1 | 2018 | 1 |
| Team 1 | Tim Beckham | 1 | 2018 | 0 |
+--------+--------------------+--------+------+----------------+
Как бы я пришел к этому?
РЕДАКТИРОВАТЬ: После выполнения запроса Гордона:
select t.*,
260 - sum(salary) over (partition by team, year order by salary desc) as rolling_budget
from t;
Itприближается, но все еще не выполняет вполне того, что ему нужно, поскольку результаты выглядят следующим образом (rolling_budget
представляет то, что дают результаты из вышеприведенного запроса, correct_budget
- то, что должно быть:
+--------+--------------------+--------+----------+------+----------------+----------------+
| team | name | salary | position | year | rolling_budget | correct_budget |
+--------+--------------------+--------+----------+------+----------------+----------------+
| Team 1 | Corey Kluber | 47 | P | 2018 | 213 | 213 |
| Team 1 | Manny Machado | 46 | 3B | 2018 | 167 | 167 |
| Team 1 | Rhys Hoskins | 28 | 1B,OF | 2018 | 139 | 139 |
| Team 1 | Jose Quintana | 27 | P | 2018 | 85 | 112 |
| Team 1 | Buster Posey | 27 | 1B,C | 2018 | 85 | 85 |
| Team 1 | Edwin Encarnacion | 22 | 1B | 2018 | 63 | 63 |
| Team 1 | Khris Davis | 16 | OF | 2018 | 47 | 47 |
| Team 1 | Marcus Stroman | 14 | P | 2018 | 33 | 33 |
| Team 1 | Ian Kinsler | 7 | 2B | 2018 | 26 | 26 |
| Team 1 | Felipe Vazquez | 6 | P | 2018 | 20 | 20 |
| Team 1 | Jeff Samardzija | 4 | P | 2018 | 16 | 16 |
| Team 1 | Ender Inciarte | 2 | OF | 2018 | 10 | 14 |
| Team 1 | Michael Wacha | 2 | P | 2018 | 10 | 12 |
| Team 1 | Andrelton Simmons | 2 | SS | 2018 | 10 | 10 |
| Team 1 | Matt Moore | 1 | P | 2018 | 0 | 9 |
| Team 1 | Joe Musgrove | 1 | P | 2018 | 0 | 8 |
| Team 1 | Cam Bedrosian | 1 | P | 2018 | 0 | 7 |
| Team 1 | Mike Foltynewicz | 1 | P | 2018 | 0 | 6 |
| Team 1 | Adam Wainwright | 1 | P | 2018 | 0 | 5 |
| Team 1 | Tim Beckham | 1 | 2B,SS | 2018 | 0 | 4 |
| Team 1 | Ryon Healy | 1 | 1B,3B | 2018 | 0 | 3 |
| Team 1 | Aaron Altherr | 1 | OF | 2018 | 0 | 2 |
| Team 1 | Trevor Story | 1 | SS | 2018 | 0 | 1 |
| Team 1 | Marcus Semien | 1 | SS | 2018 | 0 | 0 |
+--------+--------------------+--------+----------+------+----------------+----------------+
Почему он дает мне нули, когда он достигает 10?