我知道这相对简单,但我在档案中找不到解决方案,尽管我看到了类似的解决方案,但我的 SQL 不足以对它们进行逆向工程。
我所要做的就是计算团队中按周分组的呼叫数,这些呼叫数来自呼叫管理表。 下面是一些代码的示例,它返回 30,000 多个条目的计数。 如果可能的话,我希望看到这个数字根据周五到周五的范围分为几周和几天?
从 opencall 中选择 COUNT(*(哪里TRUNC(to_date(substr(LOGDATE,1,10(, 'DD-MM-YY'(( 介于 '01-JAN-14' 和 '31-DEC-14' 之间
关键字段是
日志日期
表名为
公开征集
因此,我可以创建一个该支持组每周记录的呼叫数列表,以便
记录的周呼叫第一周 134第二周 135第三周 189......
这很简单,但我可以使用这段代码在各种不同的字段上进行搜索,以识别一些模式。
我们所有的日期字段都是VARCHAR2(20字节(
我可以简单地按天对这个计数进行分组
选择 COUNT(*(, TRUNC(to_date(substr(LOGDATE,1,10(, 'DD-MM-YY'((
来自 开放通话 哪里 TRUNC(to_date(substr(LOGDATE,1,10(, 'DD-MM-YY'(( 介于 '01-JAN-14' 和 '31-DEC-14' 之间 分组 by trunc(to_date(substr(LOGDATE,1,10(, 'DD-MM-YY'(( 排序方式:TRUNC(to_date(substr(LOGDATE,1,10(, 'DD-MM-YY'((
希望有人能帮忙。
周获取计数,您必须按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');
只需从查询中删除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
作为日期/时间值存储在数据库中。 如果是这样,则无需将其转换为字符串进行比较。