2017-02-17 2 views
1

Ich brauche die Anzahl der Benutzer in einer Woche registriert, Start-Datum und Enddatum gegeben. Im Augenblick ist die Logik, die verwendet wird:Mysql bekommen einen wöchentlichen Bericht zwischen 2 Daten

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];' 

Ergebnis ist:


__count


ich es auf 1 Abfrage reduzieren wollen. ZB:


Woche Interval | Anzahl

'2017-01-01' | 15

'2017-01-08' | 12


Antwort

0

durch die Tatsache, gehen Sie betrachten Woche 1 von 2017 2017.01.01 bis 2017.01.07 sein, können Sie es mit etwas wie folgt tun:

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) 

I Beachten Sie, dass dies völlig ungeprüft ist.

0
Use the __range operator: 

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