Rank
Tuple ranking
Signature
rank(operand: Relation, order: Ordering, as: AttrName) -> Relation
Examples
rank(suppliers, [:status], :ranking)
rank(suppliers, [:status, :sid], :ranking)
Description
Extends tuples from operand with a new attribute (as) capturing the
tuple position with respect to order.
The ranking of a tuple t is more precisely defined as the number of tuples
from operand that would come strictly before t if they were all ordered
according to order. 'Equal' tuples with respect to order are not counted
in this ranking.
This means that, unless order is a total order, duplicate ranking may be
observed. In contrast, if order covers a candidate key then the ranking
attribute (as) is unique, and therefore defines an additional candidate
key for the resulting relation.
Implementation notes
Note that this operator does not compile to SQL so far. The page and
frame operators provide useful alternatives when the aim is to compute
a subset of tuples based on a ranking.