Połączone zagregowane i niezagregowane zapytanie w języku SQL

Nie wiem, jak sformułować to pytanie, ale chcę, aby zapytanie zbiorcze zostało zastosowane do wielu wierszy. Mam nadzieję, że przykład powinien to ułatwić. Zakładając, że mam następujące dane:

  player  | year | games
-------------------------
ausmubr01 | 2006 | 139
ausmubr01 | 2007 | 117
bondsba01 | 2006 | 130
bondsba01 | 2007 | 126
stairma01 | 2006 | 26
stairma01 | 2006 | 77
stairma01 | 2006 | 14
stairma01 | 2007 | 125

A dla każdego gracza każdego roku chcę obliczyć „rok kariery”, czyli liczbę lat, w których grali:

  player  | year | games | cyear
 --------------------------------
ausmubr01 | 2006 | 139   |  1
ausmubr01 | 2007 | 117   |  2
bondsba01 | 2006 | 130   |  1
bondsba01 | 2007 | 126   |  2
stairma01 | 2006 | 26    |  1
stairma01 | 2006 | 77    |  2
stairma01 | 2006 | 14    |  3
stairma01 | 2007 | 125   |  4

Naturalne byłoby wyrażenie tej transformacji jakoSELECT player, year, games, year - min(year) + 1 as cyear FROM baseball GROUP by player ale z powodu reguł dla zapytań agregujących wyrażenie jest oceniane tylko raz dla każdej grupy:

  player  | year | games | cyear
 --------------------------------
ausmubr01 | 2006 | 139   |  1
bondsba01 | 2006 | 130   |  1
stairma01 | 2006 | 26    |  1

Jak mogę przezwyciężyć ten problem w ogóle (tj. Nie tylko w tym przypadku, ale zawsze, gdy chcę wykonać operację arytmetyczną łączącą istniejącą kolumnę i pojedynczą liczbę na grupę obliczoną za pomocą funkcji agregującej)?

questionAnswers(4)

yourAnswerToTheQuestion