DAYOFWEEK,每个星期天

时间:2012-11-21 18:28:41

标签: mysql

在工作中,我们需要制作一份6个月大的报告。基本上,从5月1日到11月1日,报告必须每周一次。到目前为止,我只能一次一个星期地手动完成...

这是我的代码

SELECT displayname, capture_time,
       satisfied_load_time AS load_time,
       satisfied_response_time AS apdex_response_time

FROM   session_page_summary, page, apdex_value 

WHERE  displayname LIKE 'xyz%'    
      AND capture_time >= '2012-11-01 00:00:00' 
      AND capture_time <= '2012-11-07 00:00:00'    
      AND page.page_id = session_page_summary.page_id    
      AND page.page_id = apdex_value.page_id

GROUP BY displayname 
ORDER BY displayname

我删除了一些长代码,只是为了让它看起来更好。

结果是......

displayname  capture_time  loadtime  responsetime         
>xyz-a         11/7/2012     0.12       1.34
>xyz-b         11/7/2012     0.83       2.92
>xyz-c         11/7/2012     0.56       1.02

如何获得包含6个月数据的结果,如下所示?

displayname  capture_time  loadtime  responsetime          
>xyz-a         11/7/2012     0.72       1.82
>xyz-b         11/15/2012    1.23       1.01
>xyz-c         11/22/2012    2.83       0.78

我每7天收到一次报告。

2 个答案:

答案 0 :(得分:2)

YEARWEEK功能可能是您按周分组所需的功能。它有许多选项来定义周的开始时间或分类的年份。

使用BETWEEN运算符也可以使您的查询受益。 x BETWEEN a AND b通常比x > a AND x < b更有效。

答案 1 :(得分:0)

SELECT displayname, capture_time,
satisfied_load_time AS load_time,
satisfied_response_time AS apdex_response_time
FROM   session_page_summary sps, page p, apdex_value av
WHERE  displayname LIKE 'xyz%'    
AND page.page_id = session_page_summary.page_id    
AND page.page_id = apdex_value.page_id
AND capture_time between '2012-11-01 00:00:00'AND '2012-11-07 00:00:00'    
GROUP BY displayname 
ORDER BY displayname

会好的......