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))
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))
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), )
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))