首先,您需要知道,其中應計算。他們是兩個可能的地方,每個地方都有優點和缺點。
第一個要做計算的地方是數據庫層。不幸的是,你沒有在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中執行平均值:
log_times = (Log
.objects
.filter(menthor = some_menthor)
.values_list('some_date', flat=True)
)
menthor_average_log = reduce(lambda x, y: x + y, log_times)/len(log_times)
您是否有現在的素材來啓動您的代碼。請享用。