在“纯”SQL中,可以执行以下查询:
SELECT
count(CASE WHEN Age>= 10 AND Age < 20 THEN 1 END) AS '10 - 20',
count(CASE WHEN Age>= 21 AND Age < 30 THEN 1 END) AS '21 - 30',
count(CASE WHEN Age>= 31 AND Age < 35 THEN 1 END) AS '31 - 35',
count(CASE WHEN Age>= 36 AND Age < 40 THEN 1 END) AS '36 - 40',
FROM (SELECT Age FROM Attendees) AS AgeGroups
它基本上允许您计算数据集的直方图。
有没有办法指定使用Django aggregate()
语法?基本上应用任意语法来过滤聚合?
答案 0 :(得分:2)
Django不允许您使用aggregate
方法对queryset对象执行此操作,因为这比Django尝试的目标更复杂。这可能会在不久的将来使用the improved query APIs更改,允许custom aggregate methods。
在此之前,您可以使用Django的raw
method on querysets执行此操作,它允许您执行任意SQL。请记住,这不受Django的保护,因此您需要注意SQL中的任何可能的问题。