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