2017-08-23 19 views
0

我有SQLite中哪些組的字段由並執行總和和在同一個表平均超過距離時間字段的查詢:轉換的SQLite到Django的ORM

select 
    strftime('%W', datetime) WeekNumber, 
    sum(distance) as TotalDistance, 
    sum(distance)/sum(time) as AverageSpeed 
from sample_login_run 
group by WeekNumber; 

我試圖將此查詢轉換爲Django ORM,並避免使用Raw函數。我知道我需要在Django ORM中使用extra。這應該不是問題。我想出了這一點:

Run.objects.extra(select={'week': "strftime('%%W', datetime)"}).values(
      'week','distance').annotate(
      total_distance=Sum('distance'), average_time=F('distance')/F('time')) 

但是,這也被average_timeaverage_distance現場對數據進行分組。任何幫助將非常感激。謝謝。

回答

0

這個正確的解決方案是:在values通過

Run.objects.extra(select={'week': "cast(strftime('%%W', date_run) as integer)"}).values('week').annotate(
       total_distance=Sum('distance'), average_time=F('distance')/F('time')) 

字段將根據查詢的group by一部分去。