簡體   English   中英

如何使用 group by,max of a column 並從 Django 查詢集中獲取 model 的其他列?

[英]How to use group by, max of a column and also getting other columns of the model from a Django queryset?

我有一個看起來像這樣的 model

class Documents(models.Model):
    id = models.AutoField(primary_key=True, editable=False)
    uid = models.CharField(max_length=64)
    version = models.IntegerField()
    reviewed_dtm = models.DateTimeField(null=True)
    timestamp = models.DateTimeField(auto_add_now=True)
    document = models.FileField()

我想要最大版本的時間戳和每個 uid 的最小數量之間的平均時間差。 我基本上想知道自創建文檔以來用戶查看文檔所需的平均時間。 被審查是可選的,如果用戶發現文檔很好,則將其標記為已審查,否則將其發送給新版本。 然后為具有更新版本的 uid 制作另一條記錄。

貌似你在找Window function如果對它不熟悉,首先,閱讀如何在純 sql 中使用它來理解這個概念

我為它編寫了 ORM 查詢。 這里是:

Documents.objects.values('uid').annotate(difference = Max('reviewed_dtm')-Min('timestamp')).aggregate(Avg('difference'))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM