module Opaleye.Window
(
W.window
, W.Window
, W.over
, W.Partition
, W.partitionBy
, W.orderPartitionBy
, W.cumulative
, rowNumber
, rank
, denseRank
, percentRank
, cumeDist
, ntile
, lag
, lead
, firstValue
, lastValue
, nthValue
) where
import qualified Opaleye.Internal.Column as IC
import qualified Opaleye.Internal.HaskellDB.PrimQuery as HPQ
import qualified Opaleye.Internal.Window as W
import qualified Opaleye.Field as F
import qualified Opaleye.SqlTypes as T
rowNumber :: W.Window (F.Field T.SqlInt8)
rowNumber :: Window (Field SqlInt8)
rowNumber = WndwOp -> Window (Field SqlInt8)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw WndwOp
HPQ.WndwRowNumber
rank :: W.Window (F.Field T.SqlInt8)
rank :: Window (Field SqlInt8)
rank = WndwOp -> Window (Field SqlInt8)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw WndwOp
HPQ.WndwRank
denseRank :: W.Window (F.Field T.SqlInt8)
denseRank :: Window (Field SqlInt8)
denseRank = WndwOp -> Window (Field SqlInt8)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw WndwOp
HPQ.WndwDenseRank
percentRank :: W.Window (F.Field T.SqlFloat8)
percentRank :: Window (Field SqlFloat8)
percentRank = WndwOp -> Window (Field SqlFloat8)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw WndwOp
HPQ.WndwPercentRank
cumeDist :: W.Window (F.Field T.SqlFloat8)
cumeDist :: Window (Field SqlFloat8)
cumeDist = WndwOp -> Window (Field SqlFloat8)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw WndwOp
HPQ.WndwCumeDist
ntile :: F.Field T.SqlInt4 -> W.Window (F.Field T.SqlInt4)
ntile :: Field SqlInt4 -> Window (Field SqlInt4)
ntile (IC.Column PrimExpr
buckets) = WndwOp -> Window (Field SqlInt4)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (Field SqlInt4))
-> WndwOp -> Window (Field SqlInt4)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> WndwOp
HPQ.WndwNtile PrimExpr
buckets
lag :: F.Field_ n a -> F.Field T.SqlInt4 -> F.Field_ n a -> W.Window (F.Field_ n a)
lag :: Field_ n a -> Field SqlInt4 -> Field_ n a -> Window (Field_ n a)
lag (IC.Column PrimExpr
a) (IC.Column PrimExpr
offset) (IC.Column PrimExpr
def) =
WndwOp -> Window (Field_ n a)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (Field_ n a)) -> WndwOp -> Window (Field_ n a)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> PrimExpr -> PrimExpr -> WndwOp
HPQ.WndwLag PrimExpr
a PrimExpr
offset PrimExpr
def
lead :: F.Field_ n a -> F.Field T.SqlInt4 -> F.Field_ n a -> W.Window (F.Field_ n a)
lead :: Field_ n a -> Field SqlInt4 -> Field_ n a -> Window (Field_ n a)
lead (IC.Column PrimExpr
a) (IC.Column PrimExpr
offset) (IC.Column PrimExpr
def) =
WndwOp -> Window (Field_ n a)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (Field_ n a)) -> WndwOp -> Window (Field_ n a)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> PrimExpr -> PrimExpr -> WndwOp
HPQ.WndwLead PrimExpr
a PrimExpr
offset PrimExpr
def
firstValue :: F.Field_ n a -> W.Window (F.Field_ n a)
firstValue :: Field_ n a -> Window (Field_ n a)
firstValue (IC.Column PrimExpr
a) = WndwOp -> Window (Field_ n a)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (Field_ n a)) -> WndwOp -> Window (Field_ n a)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> WndwOp
HPQ.WndwFirstValue PrimExpr
a
lastValue :: F.Field_ n a -> W.Window (F.Field_ n a)
lastValue :: Field_ n a -> Window (Field_ n a)
lastValue (IC.Column PrimExpr
a) = WndwOp -> Window (Field_ n a)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (Field_ n a)) -> WndwOp -> Window (Field_ n a)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> WndwOp
HPQ.WndwLastValue PrimExpr
a
nthValue :: F.Field_ n a -> F.Field T.SqlInt4 -> W.Window (F.FieldNullable a)
nthValue :: Field_ n a -> Field SqlInt4 -> Window (FieldNullable a)
nthValue (IC.Column PrimExpr
a) (IC.Column PrimExpr
n) = WndwOp -> Window (FieldNullable a)
forall (n :: Nullability) a. WndwOp -> Window (Field_ n a)
W.makeWndw (WndwOp -> Window (FieldNullable a))
-> WndwOp -> Window (FieldNullable a)
forall a b. (a -> b) -> a -> b
$ PrimExpr -> PrimExpr -> WndwOp
HPQ.WndwNthValue PrimExpr
a PrimExpr
n