Django自定义聚合

2024-05-15 03:42:39 发布

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

我正在建立一个网站为指导目的。其中,有一些来自导师的日志,关于他与学员的会面如何进行。作为dashboard的一部分,我公开/计算并公开所需的数据。在

问题陈述:找出日志进入指导集合的平均频率。在

我的方法:

第1步。计算平均频率,即每次指导的两个立即发生的日志之间差异的平均值。在

第二步。计算步骤1中计算的每个导师的平均频率的平均值。在

我知道,我需要根据指导对日志进行分组,然后将其传递给一个自定义聚合函数,该函数将执行步骤1和步骤2。在Django怎么做?有人能帮我解决这个问题吗?提前谢谢。在


Tags: 数据django方法函数目的网站步骤差异
1条回答
网友
1楼 · 发布于 2024-05-15 03:42:39

首先,您需要知道在哪里进行计算。它们是两个可能的地方,每一个都有利弊。在

首先进行计算的地方是数据库层。不幸的是,在django中没有那种本机编写查询的函数。那你需要一个raw query。您还需要具有分析支持的DBMS:

sql = """    
    with table_with_predates as (
      SELECT Id,
           some_date,
           lag(some_date) pre_date
      FROM menthors
      WINDOW client_window as (partition by client order by idMenthor)
    ) select Id, avg( some_date - pre_date)  as data_average
      from table_with_predates
      group by Id      
    """
menthors = Menthor.objects.raw( sql )
print ( 'Menthor average', menthors[0].name, menthors[0].data_average )

第二步可以用自定义sql完成。从这一点可以很容易地推断出来。在

第二个进行计算的地方是应用层。从模型中获取日志时间并在python中计算平均值:

^{pr2}$

你现在有材料开始你的代码。享受吧。在

相关问题 更多 >

    热门问题