【问题标题】:Django ... Sum up a calculation from a databaseDjango ...总结数据库中的计算
【发布时间】:2014-03-20 16:17:09
【问题描述】:

postgres 表对在其中一个计算集群上执行的每个作业都有一个条目。表中包括作业纪元开始时间 (g_start_time)、作业纪元结束时间、使用的内核/处理器数 (g_processors) 和执行作业的用户 ID (g_user_id) 的字段。

要计算特定用户的 CPU 年数,数学公式为 sum((g_end_time - g_start_time) * g_processors /60*60*2 4*365.25)。 Django 中是否有适当的“聚合”方法来进行此计算,或者我是否需要遍历原始查询来进行计算?

【问题讨论】:

    标签: python django postgresql


    【解决方案1】:

    我认为没有办法专门使用默认的 QuerySet 方法来表示这一点。但是你可以使用额外的选项:

    https://docs.djangoproject.com/en/dev/ref/models/querysets/#extra

    类似这样的:

    Entry.objects.extra(select={'cpu_years': "sum((g_end_time - g_start_time) * g_processors /60*60*2 4*365.25)"})
    

    【讨论】:

    • Extra 看起来像是一个解决方案。重要的是对每个符合条件的行进行计算然后求和,而不是对每个元素求和然后对结果执行计算(即 sum(a) * sum(b) != sum(a*b) )。我会试试这个,看看是否工作正常。感谢您的回复!
    猜你喜欢
    • 2019-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2014-05-24
    • 2021-10-08
    相关资源
    最近更新 更多