Mysql 每个月所有周的SQL平均值

Mysql 每个月所有周的SQL平均值,mysql,sql,aggregation,lag,window-functions,Mysql,Sql,Aggregation,Lag,Window Functions,我试图得到每个月所有周的平均值。我如何在MySQL中做到这一点?以下是我所拥有的,也是我所需要的: SELECT   date_part(year, date_of_act) AS CALENDAR_YEAR,   date_part(week, date_of_act) AS CALENDAR_WEEK_OF_YEAR,    (num_active_div

我试图得到每个月所有周的平均值。我如何在MySQL中做到这一点?以下是我所拥有的,也是我所需要的:

SELECT                      
  date_part(year, date_of_act) AS CALENDAR_YEAR,                        
  date_part(week, date_of_act) AS CALENDAR_WEEK_OF_YEAR,                        
  (num_active_divs / total_num_divs) AS "Weekly average for each year of week"                      
FROM                        
  Infotable                     
GROUP BY calendar_year, calendar_week_of_year                       
ORDER BY calendar_year, calendar_week_of_year



What I have:        What I have:    What I have:            

Calendar_Year   Days of the year    Calendar_Week_of_year   Weekly average for each year of week            

2018,   Jan 01 - Jan 07,    1,  0.266855            
2018,   Jan 08 - Jan 14,    2,  0.297223            
2018,   Jan 15 - Jan 21,    3,  0.308583            
2018,   Jan 22 - Jan 28,    4,  0.309994            
2018,   Jan 29 - Feb 04,    5,  0.317419            
2018,   Feb 05 - Feb 11,    6,  0.316454            
2018,   Feb 12 - Feb 18,    7,  0.313929            
2018,   Feb 19 - Feb 25,    8,  0.315489            
2018,   Feb 26 - Mar 04,    9,  0.3218          
2018,   Mar 05 - Mar 11,    10, 0.308509            
2018,   Mar 12 - Mar 18,    11, 0.302866            
2018,   Mar 19 - Mar 25,    12, 0.31586         

What I need:                What I need:    What I need:    What I need:

Calendar_Year       Calendar_Week_of_year   Weekly average for each year of week    Calendar_Month_of_year  Week_of_month   Average for all weeks in that month

2018,   Jan 01 - Jan 07,    1,  0.266855,   1,  1   
2018,   Jan 08 - Jan 14,    2,  0.297223,   1,  2   
2018,   Jan 15 - Jan 21,    3,  0.308583,   1,  3   
2018,   Jan 22 - Jan 28,    4,  0.309994,   1,  4, (0.266855+0.297223+0.308583+0.309994)/4

2018,   Jan 29 - Feb 04,    5,  0.317419,   2,  1   
2018,   Feb 05 - Feb 11,    6,  0.316454,   2,  2   
2018,   Feb 12 - Feb 18,    7,  0.313929,   2,  3   
2018,   Feb 19 - Feb 25,    8,  0.315489,   2,  4,  (0.317419+0.316454+0.313929+0.315489)/4

2018,   Feb 26 - Mar 04,    9,  0.32180,    3,  1   
2018,   Mar 05 - Mar 11,    10, 0.308509,   3,  2   
2018,   Mar 12 - Mar 18,    11, 0.302866,   3,  3   
2018,   Mar 19 - Mar 25,    12, 0.31586,    3,  4,  (0.3218+0.308509+0.302866+0.31586)/4

这里的一个选项是连接到一个子查询,该子查询查找每月平均值:

SELECT
    t1.*,
    t2.avg_weekly_average
FROM yourTable t1
INNER JOIN
(
    SELECT Calendar_Year, (Calendar_Week_of_year - 1) / 4 AS month,
        AVG(weekly_average) AS avg_weekly_average
    FROM yourTable
    GROUP BYCalendar_Year, (Calendar_Week_of_year - 1) / 4
) t2
    ON t1.Calendar_Year = t2.Calendar_Year AND
       (t1.Calendar_Week_of_year - 1) / 4 = t2.month;
如果您使用的是MySQL 8+,那么您可以在这里使用
AVG
作为分析函数。在这种情况下,查询变得不那么简洁:

SELECT *,
    AVG(weekly_average) OVER (PARTITION BY Calendar_Year,
        (Calendar_Week_of_year - 1) / 4) avg_weekly_average
FROM yourTable t1;

你好,谢谢你的回复。我尝试了“AVG”选项,但它没有按预期工作。请参见下面的输出,它与预期值(最后一列)不同,出于某些原因-select语句可能需要以某种方式编辑?
日历年日历周周周周平均值,该月所有周的每年周平均值,2018年期望值1 0.266637 0.204148429 0.29542225 2018 2 0.29698 0.23631892 0.29542225 2018 3 0.308331 0.238056842 0.295422252018	4	0.309741	0.246393239	0.29542225 2018	5	0.31716	0.259385717	0.315565 2018	6	0.316196	0.259694425	0.315565 2018	7	0.313673	0.261424683	0.315565 2018	8	0.315231	0.260448818	0.315565 2018	9	0.321537	0.262954257	0.31200375 2018	10	0.308257	0.263811621	0.31200375 2018	11	0.302619	0.25810876	0.31200375 2018年12月0.315602 0.264338671 0.312003
日历年日历周周周周周平均值该月所有周的每年周平均值预计值2018年10.266637 0.204148429 0.29542225 2018年2 0.29698 0.23631892 0.29542225 2018年3 0.308331 0.238056842 0.29542225 2018年4 0.309741 0.24693239 0.295422252018 5 0.31716 0.259385717 0.315565 2018 6 0.316196 0.259694425 0.315565 2018 7 0.313673 0.261424683 0.315565 2018 8 0.315231 0.260448818 0.315565 2018 9 0.321537 0.262954257 0.31200375 2018 10 0.308257 0.263811621 0.31200375 2018 11 0.302619 0.25810876 0.31200375 2018 12 0.315602 0.264338671 0.31200375