MCPcopy Create free account
hub / github.com/sqlalchemy/sqlalchemy / Over

Class Over

lib/sqlalchemy/sql/elements.py:4223–4354  ·  view source on GitHub ↗

Represent an OVER clause. This is a special operator against a so-called "window" function, as well as any aggregate function, which produces results relative to the result set itself. Most modern SQL backends now support window functions.

Source from the content-addressed store, hash-verified

4221
4222
4223class Over(ColumnElement[_T]):
4224 """Represent an OVER clause.
4225
4226 This is a special operator against a so-called
4227 "window" function, as well as any aggregate function,
4228 which produces results relative to the result set
4229 itself. Most modern SQL backends now support window functions.
4230
4231 """
4232
4233 __visit_name__ = "over"
4234
4235 _traverse_internals: _TraverseInternalsType = [
4236 ("element", InternalTraversal.dp_clauseelement),
4237 ("order_by", InternalTraversal.dp_clauseelement),
4238 ("partition_by", InternalTraversal.dp_clauseelement),
4239 ("range_", InternalTraversal.dp_plain_obj),
4240 ("rows", InternalTraversal.dp_plain_obj),
4241 ("groups", InternalTraversal.dp_plain_obj),
4242 ]
4243
4244 order_by: Optional[ClauseList] = None
4245 partition_by: Optional[ClauseList] = None
4246
4247 element: ColumnElement[_T]
4248 """The underlying expression object to which this :class:`.Over`
4249 object refers."""
4250
4251 range_: Optional[typing_Tuple[_IntOrRange, _IntOrRange]]
4252 rows: Optional[typing_Tuple[_IntOrRange, _IntOrRange]]
4253 groups: Optional[typing_Tuple[_IntOrRange, _IntOrRange]]
4254
4255 def __init__(
4256 self,
4257 element: ColumnElement[_T],
4258 partition_by: Optional[_ByArgument] = None,
4259 order_by: Optional[_ByArgument] = None,
4260 range_: Optional[typing_Tuple[Optional[int], Optional[int]]] = None,
4261 rows: Optional[typing_Tuple[Optional[int], Optional[int]]] = None,
4262 groups: Optional[typing_Tuple[Optional[int], Optional[int]]] = None,
4263 ):
4264 self.element = element
4265 if order_by is not None:
4266 self.order_by = ClauseList(
4267 *util.to_list(order_by), _literal_as_text_role=roles.ByOfRole
4268 )
4269 if partition_by is not None:
4270 self.partition_by = ClauseList(
4271 *util.to_list(partition_by),
4272 _literal_as_text_role=roles.ByOfRole,
4273 )
4274
4275 if sum(bool(item) for item in (range_, rows, groups)) > 1:
4276 raise exc.ArgumentError(
4277 "only one of 'rows', 'range_', or 'groups' may be provided"
4278 )
4279 else:
4280 self.range_ = self._interpret_range(range_) if range_ else None

Callers 4

overMethod · 0.85
overMethod · 0.85
overMethod · 0.85
overFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected