当前位置: 首页 > 知识库问答 >
问题:

按周统计记录数量-OracleSQL

雍志文
2023-03-14

我知道这相对简单,但我无法在归档中找到解决方案,尽管我看到了类似的解决方案,但我的SQL不足以对它们进行反向工程。

我所要做的就是从呼叫管理表中,按周分组计算团队中发出的呼叫数。下面是一个返回30000多个条目的代码示例。如果可能的话,我想把这个数字分为几周,也可以根据周五到周五的范围分为几天?

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 

这样我就可以创建一个列表,列出该支持组每周记录的通话次数

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

弓宏茂
2023-03-14

只需从查询中删除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作为日期/时间值存储在数据库中。如果是这样,就不需要将其转换为字符串进行比较。

华飞驰
2023-03-14

对于按周计数,您必须按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');
 类似资料:
  • 我在解释Hibernate会话日志时有点卡住了。我的主要问题是许多查询有点慢 - 基于我实现的一些 TimeWatch 日志记录。为了进一步跟踪问题,我启用了Hibernate会话日志记录,目的是查看执行查询或获取连接的时间是否浪费(我猜这意味着配置错误)。 关于用例——Oracle DB、Spring、Hibernate。在“繁忙时间”,最多有15个线程对数据库执行查询。我想没什么特别的。 现在

  • 问题内容: 我有一个类似于以下的模型: 我想查询数据库以获取按天分组的场所的评论总数。MySQL查询为: 在Django中完成此操作的最佳方法是什么?我可以用 并在视图中解析结果,但这对我来说似乎不对。 问题答案: 这应该可以工作(使用与你使用的相同的MySQL特定功能):

  • 我有一个包含和列的表,想知道如何返回一个列,该列显示在当前出现之前出现了多少次。 我已尝试计数(作业编号),但我不知道如何将其设置为仅计数当前报告日期之前的事件。 到目前为止,我不得不将数据导出到excel中,并为报告日期执行一个Countifs 请帮忙!:)

  • 问题内容: 我有一个小问题。我有这样格式的PostgreSQL表 我想按5分钟的时间对它们进行分组,并将该组的平均值作为一个单一值,因此将有20%的记录,每条记录平均包含〜5个数字,而时间设置为中的第一个时间值群组。我不知道如何在PgSQL中执行此操作。因此结果将是: 问题答案: 解释 子查询每5分钟从表中的最小值“到最大值”产生一行记录。 以5分钟为间隔将LEFT JOIN返回表切片数据。仔细

  • 问题内容: 我正在用log4j开发一个非常大的Java应用程序,我想知道是否有一种方法可以在运行时提取活动记录器的数量?或应用程序中现有的记录器是什么?我的最终目标是获取所有记录器的列表并更改它们在运行时的级别。谢谢。 问题答案: 您可以尝试类似: 然后遍历allLoggers。

  • 统计量 设$$X_1$$,$$X_2$$,...,$$X_n$$是来自总体$$X$$(随机变量)的一个样本,它们相互独立,$$g(X_1,X_2,...,X_n)$$是$$X_1$$,$$X_2$$,...,$$X_n$$的函数,若$$g$$中不含未知参数,则称$$g(X_1,X_2,...,X_n)$$是一统计量。 因为$$X_1$$,$$X_2$$,...,$$X_n$$都是随机变量,而统计量