我想写一个像这样的查询:
SELECT COUNT(a.consumerservicerequestid), YEAR(b.statusdate), MONTH(b.statusDate), AVG(TIMEDIFF(a.statusDate, b.statusdate))
FROM consumer_servicerequest_log a, consumer_servicerequest_log b
WHERE a.consumerservicerequestid=b.consumerservicerequestid
AND a.status="Parts received"
OR b.status IN ("Parts pending","Parts request accepted")
GROUP BY YEAR(b.statusdate), MONTH(b.statusdate);
有没有办法在Django ORM中做到这一点?
答案 0 :(得分:0)
如果没有看到你的模型就很难回答这个问题,但我相信你可以做复杂的查找
Model.objects.annotate(count=Count(MODEL_FIELD))
对于日期对象,您可以执行以下操作,具体取决于日期对象在DB中的保存方式
.annotate(hour=Round(F('connection_timestamp') % (3600 * 24) /3600))
对于Avg,您可以使用aggregate
方法
filter
过滤字段值的方法