|
@@ -670,6 +670,18 @@ class BasicExpressionsTests(TestCase):
|
|
|
# contain nested aggregates.
|
|
|
self.assertNotIn('GROUP BY', sql)
|
|
|
|
|
|
+ @skipUnlessDBFeature('supports_over_clause')
|
|
|
+ def test_aggregate_rawsql_annotation(self):
|
|
|
+ with self.assertNumQueries(1) as ctx:
|
|
|
+ aggregate = Company.objects.annotate(
|
|
|
+ salary=RawSQL('SUM(num_chairs) OVER (ORDER BY num_employees)', []),
|
|
|
+ ).aggregate(
|
|
|
+ count=Count('pk'),
|
|
|
+ )
|
|
|
+ self.assertEqual(aggregate, {'count': 3})
|
|
|
+ sql = ctx.captured_queries[0]['sql']
|
|
|
+ self.assertNotIn('GROUP BY', sql)
|
|
|
+
|
|
|
def test_explicit_output_field(self):
|
|
|
class FuncA(Func):
|
|
|
output_field = CharField()
|