먼저 을 알아야합니다. 여기서 계산을해야합니다. 그들은 각각 찬반 양론이 가능한 두 개의 장소입니다.
계산을 수행 할 첫 번째 위치는 데이터베이스 계층입니다. 불행히도 당신은 기본적으로 쿼리를 작성하는 종류의 함수를 장고에 가지고 있지 않습니다. 그런 다음 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을 사용하여 수행 할 수 있습니다. 이 점에서 쉽게 추론 할 수 있습니다.
계산을 수행 할 두 번째 위치는 응용 프로그램 레이어입니다. 모델에서 로그 시간을 가져 와서 파이썬에서 평균을하십시오 :
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)
코드를 시작하는 데 필요한 자료가 있습니까? 즐겨.