code: def over(self, window):
          
          return GroupedTableExpr(
              self.table,
              self.by,
              having=self._having,
              order_by=self._order_by,
              window=window,
          )
docs: Add a window clause to be applied to downstream analytic expressions