Django:选项卡上的自连接

2024-10-03 21:28:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个类似这样的查询:

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中做到这一点?在


Tags: logconsumerrequeststatuscountserviceselectyear
1条回答
网友
1楼 · 发布于 2024-10-03 21:28:16

在没有看到你的模型的情况下很难回答这个问题,但是我相信你可以做复杂的查找

  • 对于计数,您可以Model.objects.annotate(count=Count(MODEL_FIELD))
  • 对于date对象,您可以执行以下操作,这取决于您的日期对象是如何保存在DB中的

    .annotate(hour=Round(F('connection_timestamp') % (3600 * 24) /3600))

  • 对于Avg,可以使用aggregate方法

  • 以及,filter过滤字段值的方法

相关问题 更多 >