在我的Spiceworks数据库中有一个表格,票据,我有两个列,first_response_secs和created_at。
我的任务是找到每周门票的平均响应时间。
因此,如果我运行以下查询:
select AVG(first_response_secs) from (
select first_response_secs,created_at
from tickets
where created_at BETWEEN '2017-03-19' and '2017-03-25'
)
我将恢复该周的平均首次响应秒数。但就我的有限SQL而言,这就是我的意思。我需要6个月的数据,我不想手动编辑日期范围并重新运行查询24次。
我想编写一个返回类似于以下输出的查询:
WEEK AVERAGE RESPONSE TIME(secs)
-----------------------------------------------------------
2017-02-26 - 2017-03-04 21447
2017-03-05 - 2017-03-11 20564
2017-03-12 - 2017-03-18 25883
2017-03-19 - 2017-03-25 12244
或类似的事情,回归6个月。
答案 0 :(得分:0)
周很棘手。怎么样:
skipheaders
答案 1 :(得分:0)
一种肮脏的方法是使用case
来定义周边界:
select week, avg(first_response_secs)
from (
select case
when created_at between '2017-02-26' and '2017-03-04' then '2017-02-26 - 2017-03-04'
when created_at between '2017-03-05' and '2017-03-11' then '2017-03-05 - 2017-03-11'
when created_at between '2017-03-12' and '2017-03-18' then '2017-03-12 - 2017-03-18'
when created_at between '2017-03-19' and '2017-03-25' then '2017-03-19 - 2017-03-25'
end as week,
first_response_secs
from tickets
) t
group by week;
请注意,此方法是一种通用方法,可以根据需要进行修改以更改边界。