我正在为现有应用程序添加一些新功能(数据库是Microsoft SQL 2005)。基本上,我试图计算特定部门在特定日期范围内“无人”的分钟数(或秒数)。我希望用一个语句理想地查询数据集。我有一个循环遍历记录集的例程,解析它并吐出一个答案,但它非常难看。有没有人有任何建议,我可以优化它的可读性,使用纯SQL - 甚至任何指针/我应该看的文章,我的Googlefu是让我失望。在日期/时间范围内计算数据集之外的总时间
我想在某些方面,这几乎就像一个日历的“空闲时间”搜索,但聚合。
这里是一个模拟样本数据集,让您了解我正在处理的内容(有效地同事进入时钟,然后计时)。为了简单起见,我使用的是四舍五入到几分钟,但我可能会在几秒钟内计算。
------------------------------------------------------------------------
| Colleague Id | Department Id | Date In | Date Out |
------------------------------------------------------------------------
| 1 | 1 | 04/01/2010 08:45 | 04/01/2010 11:45 |
| 2 | 1 | 04/01/2010 09:00 | 04/01/2010 12:15 |
| 3 | 1 | 04/01/2010 10:00 | 04/01/2010 12:00 |
| 4 | 1 | 04/01/2010 12:30 | 04/01/2010 17:00 |
| 1 | 1 | 04/01/2010 12:45 | 04/01/2010 17:15 |
| 3 | 1 | 04/01/2010 13:00 | 04/01/2010 17:25 |
| 5 | 2 | ... | ... |
------------------------------------------------------------------------
因此,例如,如果我查询上表中为部门ID = 1,04/01/2010 8时三十分00秒和04/01/2010 17点30分○○秒之间,我期望的结果是35分钟(或2100秒)“无人驾驶时间”(这是无人驾驶的范围的开始,中间和结束时间的总和)。
感谢亚当链接这些项目进一步阅读,非常有趣! – benno 2010-01-07 15:06:57