我需要获得一周内注册的用户数量,具体取决于开始日期和结束日期。 现在使用的逻辑是:
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
答案 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))