标签: sql-server-7

如何根据事件的日期,时间和持续时间检查SQL表中的平均并发事件?

我有一组呼叫详细记录,根据这些记录,我应该确定每个系统每小时的平均并发活动呼叫数(精度为一分钟).如果我查询下午7点到晚上8点,我应该看到该小时内(每个系统)的小时平均并发呼叫(平均每分钟的并发呼叫).

所以,我需要一种方法来检查7:00-7:01,7:01-7:02等活动呼叫的数量,然后平均这些数字.如果呼叫的时间和持续时间落在正在检查的当前分钟内,则认为呼叫处于活动状态.

更难的是它需要跨越SQL 7.0和SQL 2000(2000中的某些功能在7.0中不可用,例如GetUTCTime()),如果我能让2000工作,我会很高兴.

我可以采取什么方法解决这个问题?

我考虑在被检查的小时内循环分钟(60)并添加落在该分钟之间的呼叫计数,然后以某种方式交叉引用持续时间以确保在晚上7:00开始并且持续时间为300秒在7:04显示活跃,但我无法想象如何解决问题.我试图找出一种方法来对每一次电话进行加权,特别是那一分钟会告诉我这段时间内呼叫是否有效,但无法提出有效的解决方案.

这里的数据类型与我要查询的数据类型相同.我没有对模式的任何控制(除了可能转换数据并插入具有更合适的数据类型的另一个表之外).我提供了一些我知道有并发活动调用的示例数据.

CREATE TABLE Records(
  seconds char(10),
  time char(4),
  date char(8),
  dur int,
  system int,
  port int,
)

--seconds is an stime value. It's the difference of seconds from UTC 1/1/1970 00:00:00 to the current UTC time, we use it as an identifier (like epoch).
--time is the time the call was made.
--date is the day the call was made.
--dur is the duration of the call in seconds.
--system is the system …
Run Code Online (Sandbox Code Playgroud)

sql sql-server algorithm sql-server-2000 sql-server-7

11
推荐指数
1
解决办法
2360
查看次数

SQL Server错误:无法对大小为x的行进行排序,这大于允许的最大值8094.但我没有排序

据我所知,"不能排序大小为9754的行,这大于允许的最大值8094".来自SQL Server的是由一行中有超过9k个字符的行引起的,这个行大于SQL Server 7中的页面大小限制.但是我没有通过下面的数据调用一个命令,所以为什么错误说它不能排序?

SELECT <a number of columns...>
FROM Category10Master c10
JOIN Category20Master c20 ON c10.Cat10ID = c20.ParentCatID 
JOIN Category25Master c25 ON c20.Cat20ID = c25.ParentCatID 
JOIN Category30Master c30 ON c25.Cat25ID = c30 .ParentCatID 
JOIN Item i ON c30.Cat30ID = i.ParentCatID
Run Code Online (Sandbox Code Playgroud)

编辑:是的,我知道我可以调用更少的列来解决这个问题 - 实际的查询显式调用所需的列,但仍超过行大小限制.这实际上是在一个被称为站点范围的视图中,因此更改视图以缩回更少的列不是一个有吸引力的选项 - 需要修改数十个页面以从视图以外的其他位置获取数据.我不幸的是已经把一个丑陋的设计搞得一团糟,我希望有人能提供比吸引更少数据更有吸引力的解决方案.

database sql-server sql-server-7

1
推荐指数
1
解决办法
2369
查看次数