예제 #1
0
    def test_first_value_multi_argument(self):
        expr = an.FirstValue(self.table_abc.fizz, self.table_abc.buzz) \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date)

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

        self.assertEqual(
            'SELECT '
            'FIRST_VALUE("fizz","buzz") '
            'OVER(PARTITION BY "foo" ORDER BY "date") '
            'FROM "abc"', str(q))
예제 #2
0
    def test_first_value_ignore_nulls_first(self):
        expr = an.FirstValue(self.table_abc.fizz) \
            .ignore_nulls() \
            .over(self.table_abc.foo) \
            .orderby(self.table_abc.date)

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

        self.assertEqual(
            'SELECT '
            'FIRST_VALUE("fizz" IGNORE NULLS) '
            'OVER(PARTITION BY "foo" ORDER BY "date") '
            'FROM "abc"', str(q))
예제 #3
0
    def test_first_value(self):
        expr = an.FirstValue(self.table_abc.fizz).over(
            self.table_abc.foo).orderby(self.table_abc.date)

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

        self.assertEqual(
            "SELECT "
            'FIRST_VALUE("fizz") '
            'OVER(PARTITION BY "foo" ORDER BY "date") '
            'FROM "abc"',
            str(q),
        )
예제 #4
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))