2017-02-17 175 views
1

我需要獲取一週內註冊的用戶數,給定開始日期和結束日期。 現在所用的邏輯是:Mysql獲取兩個日期之間的每週報告

week_days_list = [['2017-01-01', '2017-01-07'], ['2017-01-08', '2017-01-14']] 

for week in week_days_list: 
    query = 'SELECT COUNT('*') AS `__count` FROM `user_table` 
      INNER JOIN `user_auth` ON (`user_table`.`user_id` = `user_auth`.`id`) 
      WHERE `user_auth`.`date_joined` BETWEEN week[0] 
      AND week[1];' 

結果是:


__count


我希望它也降低到1個查詢。 例如:


Week Interval | count

'2017-01-01'| 15

'2017-01-08'| 12


回答

0

由事實去你考慮1周2017年將是2017年1月1日至2017年1月7日,你可以像下面這樣做:

SELECT 
    YEAR(date_joined) `__year`, 
    WEEK(date_joined) `__week`, 
    COUNT(*)   `__count` 
FROM 
    user_table 
JOIN 
    user_auth ON 
     user_table.user_id = user_auth.id 
GROUP BY 
    YEAR(date_joined), 
    WEEK(date_joined) 

我應該注意,這是完全未經測試的。

0
Use the __range operator: 

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date)) 
相關問題