使用SQL查询

时间:2017-03-27 19:14:03

标签: sql sqlite

在我的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个月。

2 个答案:

答案 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;

Demo

请注意,此方法是一种通用方法,可以根据需要进行修改以更改边界。