codekingpro/portable-devtools
114k
1"""2Package for SQL analytic functions wrappers3"""4 5from __future__ import annotations6 7from pypika.terms import (8 AnalyticFunction,9 IgnoreNullsAnalyticFunction,10 WindowFrameAnalyticFunction,11)12 13__author__ = "Timothy Heys"14__email__ = "theys@kayak.com"15 16 17class Preceding(WindowFrameAnalyticFunction.Edge):18 modifier = "PRECEDING"19 20 21class Following(WindowFrameAnalyticFunction.Edge):22 modifier = "FOLLOWING"23 24 25CURRENT_ROW = "CURRENT ROW"26 27 28class Rank(AnalyticFunction):29 def __init__(self, **kwargs):30 super().__init__("RANK", **kwargs)31 32 33class DenseRank(AnalyticFunction):34 def __init__(self, **kwargs):35 super().__init__("DENSE_RANK", **kwargs)36 37 38class RowNumber(AnalyticFunction):39 def __init__(self, **kwargs):40 super().__init__("ROW_NUMBER", **kwargs)41 42 43class NTile(AnalyticFunction):44 def __init__(self, term, **kwargs):45 super().__init__("NTILE", term, **kwargs)46 47 48class FirstValue(WindowFrameAnalyticFunction, IgnoreNullsAnalyticFunction):49 def __init__(self, *terms, **kwargs):50 super().__init__("FIRST_VALUE", *terms, **kwargs)51 52 53class LastValue(WindowFrameAnalyticFunction, IgnoreNullsAnalyticFunction):54 def __init__(self, *terms, **kwargs):55 super().__init__("LAST_VALUE", *terms, **kwargs)56 57 58class Median(AnalyticFunction):59 def __init__(self, term, **kwargs):60 super().__init__("MEDIAN", term, **kwargs)61 62 63class Avg(WindowFrameAnalyticFunction):64 def __init__(self, term, **kwargs):65 super().__init__("AVG", term, **kwargs)66 67 68class StdDev(WindowFrameAnalyticFunction):69 def __init__(self, term, **kwargs):70 super().__init__("STDDEV", term, **kwargs)71 72 73class StdDevPop(WindowFrameAnalyticFunction):74 def __init__(self, term, **kwargs):75 super().__init__("STDDEV_POP", term, **kwargs)76 77 78class StdDevSamp(WindowFrameAnalyticFunction):79 def __init__(self, term, **kwargs):80 super().__init__("STDDEV_SAMP", term, **kwargs)81 82 83class Variance(WindowFrameAnalyticFunction):84 def __init__(self, term, **kwargs):85 super().__init__("VARIANCE", term, **kwargs)86 87 88class VarPop(WindowFrameAnalyticFunction):89 def __init__(self, term, **kwargs):90 super().__init__("VAR_POP", term, **kwargs)91 92 93class VarSamp(WindowFrameAnalyticFunction):94 def __init__(self, term, **kwargs):95 super().__init__("VAR_SAMP", term, **kwargs)96 97 98class Count(WindowFrameAnalyticFunction):99 def __init__(self, term, **kwargs):100 super().__init__("COUNT", term, **kwargs)101 102 103class Sum(WindowFrameAnalyticFunction):104 def __init__(self, term, **kwargs):105 super().__init__("SUM", term, **kwargs)106 107 108class Max(WindowFrameAnalyticFunction):109 def __init__(self, term, **kwargs):110 super().__init__("MAX", term, **kwargs)111 112 113class Min(WindowFrameAnalyticFunction):114 def __init__(self, term, **kwargs):115 super().__init__("MIN", term, **kwargs)116 117 118class Lag(AnalyticFunction):119 def __init__(self, *args, **kwargs):120 super().__init__("LAG", *args, **kwargs)121 122 123class Lead(AnalyticFunction):124 def __init__(self, *args, **kwargs):125 super().__init__("LEAD", *args, **kwargs)126 