"""
Package for SQL analytic functions wrappers
"""
from pypika.terms import (
AnalyticFunction,
WindowFrameAnalyticFunction,
IgnoreNullsAnalyticFunction,
)
__author__ = "Timothy Heys"
__email__ = "theys@kayak.com"
class Preceding(WindowFrameAnalyticFunction.Edge):
modifier = "PRECEDING"
class Following(WindowFrameAnalyticFunction.Edge):
modifier = "FOLLOWING"
CURRENT_ROW = "CURRENT ROW"
class Rank(AnalyticFunction):
def __init__(self, **kwargs):
super(Rank, self).__init__("RANK", **kwargs)
class DenseRank(AnalyticFunction):
def __init__(self, **kwargs):
super(DenseRank, self).__init__("DENSE_RANK", **kwargs)
class RowNumber(AnalyticFunction):
def __init__(self, **kwargs):
super(RowNumber, self).__init__("ROW_NUMBER", **kwargs)
class NTile(AnalyticFunction):
def __init__(self, term, **kwargs):
super(NTile, self).__init__("NTILE", term, **kwargs)
class FirstValue(WindowFrameAnalyticFunction, IgnoreNullsAnalyticFunction):
def __init__(self, *terms, **kwargs):
super(FirstValue, self).__init__("FIRST_VALUE", *terms, **kwargs)
class LastValue(WindowFrameAnalyticFunction, IgnoreNullsAnalyticFunction):
def __init__(self, *terms, **kwargs):
super(LastValue, self).__init__("LAST_VALUE", *terms, **kwargs)
class Median(AnalyticFunction):
def __init__(self, term, **kwargs):
super(Median, self).__init__("MEDIAN", term, **kwargs)
class Avg(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Avg, self).__init__("AVG", term, **kwargs)
class StdDev(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(StdDev, self).__init__("STDDEV", term, **kwargs)
class StdDevPop(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(StdDevPop, self).__init__("STDDEV_POP", term, **kwargs)
class StdDevSamp(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(StdDevSamp, self).__init__("STDDEV_SAMP", term, **kwargs)
class Variance(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Variance, self).__init__("VARIANCE", term, **kwargs)
class VarPop(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(VarPop, self).__init__("VAR_POP", term, **kwargs)
class VarSamp(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(VarSamp, self).__init__("VAR_SAMP", term, **kwargs)
class Count(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Count, self).__init__("COUNT", term, **kwargs)
class Sum(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Sum, self).__init__("SUM", term, **kwargs)
class Max(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Max, self).__init__("MAX", term, **kwargs)
class Min(WindowFrameAnalyticFunction):
def __init__(self, term, **kwargs):
super(Min, self).__init__("MIN", term, **kwargs)
class Lag(AnalyticFunction):
def __init__(self, *args, **kwargs):
super(Lag, self).__init__("LAG", *args, **kwargs)
class Lead(AnalyticFunction):
def __init__(self, *args, **kwargs):
super(Lead, self).__init__("LEAD", *args, **kwargs)