我如何使用django orm的SQL子查询
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何使用django orm的SQL子查询相关的知识,希望对你有一定的参考价值。
我想做这个查询用django orm获取最近的avg数据
select product_name, AVG(price) as avg_price
from (
select procuct_name, price, deal_date
from deal_history
order by deal_date desc
) R
所以,我试过这个问题
DealHistory.objects.all().order_by('-deal_date')
.values('product_name').annotate(avg_price=Avg('price'))
但是这个django-orm返回SQL查询下面
select product_name, deal_date, avg(price) as avg_price
from deal_history
order by deal_date desc
group by product_name, deal_date
我该怎么办?
答案
如果你想拥有所有记录的平均值,你必须使用聚合。 annotate分别为每条记录运行。
以上是关于我如何使用django orm的SQL子查询的主要内容,如果未能解决你的问题,请参考以下文章
使用SQL语言了解Django ORM中的分组(group by)和聚合(aggregation)查询
如何在 django ORM 的 From 子句中编写子查询