计算按周记录的记录数 - Oracle SQL

时间:2014-12-03 12:05:16

标签: sql oracle date count

我知道这是相对简单的,但我找不到档案中的解决方案,虽然我看到类似但我的SQL不足以对其进行逆向工程。

我所要做的就是计算从呼叫管理表中按周分组的团队中提出的呼叫数。下面是一些代码的示例,它返回30,000个条目的计数。如果可能的话,我希望看到这个数字分为几个星期,也可能是星期五到星期五的天数?

select COUNT(*) from opencall 
where 
trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY')) BETWEEN '01-JAN-14' AND '31-DEC-14'

关键字段是

logdate 

表名是

opencall 

因此,我可以创建一个每周由该suppgroup记录的呼叫数列表

Week      Calls Logged
Week 1       134
Week 2       135
Week 3       189
...
...

非常简单,但我可以使用此代码对各种不同的字段进行搜索,以识别某些模式。

我们所有的日期字段都是VARCHAR2(20 BYTE)

我可以使用

将此计数按天分组

    select COUNT(*), trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY'))
from opencall where trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY')) BETWEEN '01-JAN-14' AND '31-DEC-14' group by trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY')) order by trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY'))

希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:0)

只需从查询中删除closedby

with closed_calls as (
       select to_number(to_char(closedate, 'IW') as week_number, oc.*
       from opencall oc
       where  ((status > 15 or status = 6) and
              closedby in ('analyst1', 'analyst2', 'analyst3', 'analyst4', 'analyst5', 'analyst6', 'analyst7') and
              trunc(closeddate) between date '2014-10-01' and date '2014-12-31' 
      )
select week_number as "Week number", count(*) as "Calls closed"
from   closed_calls
group by week_number
order by week_number desc;

请注意,我更改了日期算术。据推测,closedate被存储为数据库中的日期/时间值。如果是这样,您不需要将其转换为字符串进行比较。

答案 1 :(得分:0)

要按周计算,您必须按trunc(your_date, 'IW')分组,但如果您想要周五至周五,则必须使用next_day功能,然后按trunc(NEXT_DAY(your_date,'FRIDAY'), 'IW')进行分组,这样,您的查询应该是像这样的东西:

select 
'WEEK '|| row_number() over(order by trunc(NEXT_DAY(to_date(substr(LOGDATE,1,10), 'DD-MM-YY'),'FRIDAY'), 'IW')) WEEK,
count(*) Calls Logged
from opencall
where trunc(to_date(substr(LOGDATE,1,10), 'DD-MM-YY')) BETWEEN '01-JAN-14' AND '31-DEC-14'
group by trunc(NEXT_DAY(to_date(substr(LOGDATE,1,10), 'DD-MM-YY'),'FRIDAY'), 'IW')   
order by trunc(NEXT_DAY(to_date(substr(LOGDATE,1,10), 'DD-MM-YY'),'FRIDAY'), 'IW');
相关问题