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.