Mysql在两个日期之间获得每周报告

时间:2017-02-17 09:56:31

标签: python mysql sql

我需要获得一周内注册的用户数量,具体取决于开始日期和结束日期。 现在使用的逻辑是:

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

15

我希望它将它减少到1个查询。 例如:

周间隔|计数

' 2017年1月1日' | 15

' 2017年1月8日' | 12

2 个答案:

答案 0 :(得分:0)

根据您认为2017年第1周为2017-01-01至2017-01-07的事实,您可以使用以下内容进行:

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)

我应该注意,这是完全未经测试的。

答案 1 :(得分:0)

Use the __range operator:

...filter(current_issue__isnull=True, created_at__range=(start_date, end_date))