我有一個正在嘗試在Django中編寫的SQL查詢(不訴諸於RAW),並希望您可以提供幫助。大致上,我期待接下來的兩個查詢 - 第一個計算COUNT,然後我計算一個COUNTER的平均值。 (這會給你一個大件商品的平均數,每個位置)Django中嵌套的SQL查詢
的作品是SQL:
SELECT location_name, Avg(subq.num_tickets) FROM (
SELECT Count(ticketitem.id) AS num_tickets, location.name AS location_name
FROM ticketitem
JOIN ticket ON ticket.id = ticketitem.ticket_id
JOIN location ON location.id = ticket.location_id
JOIN location ON location.id = location.app_location_id
GROUP BY ticket_id, location.name) AS subq
GROUP BY subq.location_name;
對於我的Django的代碼,我想是這樣的:
# Get the first count
qs = TicketItem.objects.filter(<my complicated filter>).\
values('ticket__location__app_location__name','posticket').\
annotate(num_tickets=Count('id'))
# now get the average of the count
qs2 = qs.values('ticket__location__app_location__name').\
annotate(Avg('num_tickets')).\
order_by('location__app_location__name')
但由於num_tickets不存在而失敗......無論如何 - 懷疑我的速度很慢。會愛一個人開導我!
嗨那裏 - 謝謝你的幫助。我試過這個例子,但它使用「註釋」,然後「聚合」,這給了我一個聚合的結果,我..這會給我一個平均的整體,但我其實想要一個平均的位置---我假設我需要一個值/註釋組合(本質上是一個GROUP BY)。 – adamtay82