def test_multiple_partitions(self): expr = an.Rank() \ .orderby(self.table_abc.date) \ .over(self.table_abc.foo, self.table_abc.bar) q = Query.from_(self.table_abc).select(expr) self.assertEqual( 'SELECT ' 'RANK() ' 'OVER(PARTITION BY "foo","bar" ORDER BY "date") ' 'FROM "abc"', str(q))
def test_rank(self): expr = an.Rank() \ .over(self.table_abc.foo) \ .orderby(self.table_abc.date) q = Query.from_(self.table_abc).select(expr) self.assertEqual( 'SELECT ' 'RANK() ' 'OVER(PARTITION BY "foo" ORDER BY "date") ' 'FROM "abc"', str(q))
def test_table_prefixes_used_in_analytic_functions(self): expr = an.Rank().over(self.table_abc.foo).orderby(self.table_efg.date) query = (Query.from_(self.table_abc).join( self.table_efg, how=JoinType.left).on( self.table_abc.foo == self.table_efg.bar).select("*", expr)) self.assertEqual( 'SELECT *,RANK() OVER(PARTITION BY "abc"."foo" ORDER BY "efg"."date") ' 'FROM "abc" LEFT JOIN "efg" ON "abc"."foo"="efg"."bar"', str(query), )
def test_rank_with_alias(self): expr = an.Rank().over(self.table_abc.foo).orderby( self.table_abc.date).as_("rank") q = Query.from_(self.table_abc).select(expr) self.assertEqual( "SELECT " "RANK() " 'OVER(PARTITION BY "foo" ORDER BY "date") "rank" ' 'FROM "abc"', str(q), )