示例#1
0
 def test_range_then_rows_raises_attribute_error(self):
     with self.assertRaises(AttributeError):
         an.Sum(self.table_abc.fizz) \
             .over(self.table_abc.foo) \
             .orderby(self.table_abc.date) \
             .range(an.Preceding()) \
             .rows(an.Preceding())
示例#2
0
    def test_varpop_rows_between_unbounded_preceeding_x_following(self):
        expr = an.VarPop(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .rows(an.Preceding(), an.Following(6))

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'VAR_POP("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'ROWS BETWEEN UNBOUNDED PRECEDING AND 6 FOLLOWING'
            ') '
            'FROM "abc"', str(q))
示例#3
0
    def test_count_range_between_unbounded_preceeding_current_row(self):
        expr = an.Count(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .range(an.Preceding(), an.CURRENT_ROW)

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'COUNT("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW'
            ') '
            'FROM "abc"', str(q))
示例#4
0
    def test_max_range_x_preceeding(self):
        expr = an.Max(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .range(an.Preceding(5))

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'MAX("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'RANGE 5 PRECEDING'
            ') '
            'FROM "abc"', str(q))
示例#5
0
    def test_first_value_range_between_x_preceeding_unbounded_following(self):
        expr = an.FirstValue(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .range(an.Preceding(3), an.Following())

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'FIRST_VALUE("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'RANGE BETWEEN 3 PRECEDING AND UNBOUNDED FOLLOWING'
            ') '
            'FROM "abc"', str(q))
示例#6
0
    def test_sum_rows_unbounded_preceeding(self):
        expr = an.Sum(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .rows(an.Preceding())

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'SUM("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'ROWS UNBOUNDED PRECEDING'
            ') '
            'FROM "abc"', str(q))
示例#7
0
    def test_varpop_range_unbounded_preceeding(self):
        expr = an.VarPop(self.table_abc.fizz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date) \
            .range(an.Preceding())

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            'SELECT '
            'VAR_POP("fizz") '
            'OVER('
            'PARTITION BY "foo" ORDER BY "date" '
            'RANGE UNBOUNDED PRECEDING'
            ') '
            'FROM "abc"', str(q))
示例#8
0
    def test_max_range_x_preceeding(self):
        expr = an.Max(self.table_abc.fizz).over(self.table_abc.foo).orderby(
            self.table_abc.date).range(an.Preceding(5))

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            "SELECT "
            'MAX("fizz") '
            "OVER("
            'PARTITION BY "foo" ORDER BY "date" '
            "RANGE 5 PRECEDING"
            ") "
            'FROM "abc"',
            str(q),
        )
示例#9
0
    def test_sum_rows_unbounded_preceeding(self):
        expr = an.Sum(self.table_abc.fizz).over(self.table_abc.foo).orderby(
            self.table_abc.date).rows(an.Preceding())

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            "SELECT "
            'SUM("fizz") '
            "OVER("
            'PARTITION BY "foo" ORDER BY "date" '
            "ROWS UNBOUNDED PRECEDING"
            ") "
            'FROM "abc"',
            str(q),
        )
示例#10
0
    def test_varpop_range_unbounded_preceeding(self):
        expr = (an.VarPop(self.table_abc.fizz).over(
            self.table_abc.foo).orderby(self.table_abc.date).range(
                an.Preceding()))

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            "SELECT "
            'VAR_POP("fizz") '
            "OVER("
            'PARTITION BY "foo" ORDER BY "date" '
            "RANGE UNBOUNDED PRECEDING"
            ") "
            'FROM "abc"',
            str(q),
        )
示例#11
0
    def test_variance_rows_between_unbounded_preceeding_unbounded_following(
            self):
        expr = (an.Variance(self.table_abc.fizz).over(
            self.table_abc.foo).orderby(self.table_abc.date).rows(
                an.Preceding(), an.Following()))

        q = Query.from_(self.table_abc).select(expr)

        self.assertEqual(
            "SELECT "
            'VARIANCE("fizz") '
            "OVER("
            'PARTITION BY "foo" ORDER BY "date" '
            "ROWS BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING"
            ") "
            'FROM "abc"',
            str(q),
        )
示例#12
0
 def test_range_called_twice_raises_attribute_error(self):
     with self.assertRaises(AttributeError):
         an.Sum(self.table_abc.fizz).over(self.table_abc.foo).orderby(
             self.table_abc.date).range(an.Preceding()).range(
                 an.Preceding())