有人建议SQL查询并将15分钟间隔数据分组到几天?

时间:2012-09-19 18:33:56

标签: sql datetime

我希望有人可以回答这个关于我要写的SQL查询的问题,这可能是相当基本的,但它让我疯狂。

我有一个表格,其中包含每15分钟为一些登录电话系统的座席写入的数据。以下是一些设置字段的示例,还有更多,但我保持简单快速的输入

FieldName          Size  Type
BeginTimePeriodDt  93    datetime
User_Id            12    varchar
EndTimePeriodDt    93    datetime
TotalLoginTime      4    int

以及数据的样本。还有更多的经纪人,但我再次保持简单。

BeginTimePeriodDT    User_ID EndTimePeriodDt      TotalLoginTime
2012-09-10 13:30:00  XXXXXX  2012-09-10 13:45:00  35
2012-09-10 13:30:00  YYYYYY  2012-09-10 13:45:00  900
2012-09-10 13:45:00  XXXXXX  2012-09-10 14:00:00  900
2012-09-10 13:45:00  YYYYYY  2012-09-10 14:00:00  600
2012-09-10 14:00:00  XXXXXX  2012-09-10 14:15:00  250
2012-09-10 14:00:00  YYYYYY  2012-09-10 14:15:00  95
2012-09-11 13:30:00  XXXXXX  2012-09-11 13:45:00  35
2012-09-11 13:30:00  YYYYYY  2012-09-11 13:45:00  900
2012-09-11 13:45:00  XXXXXX  2012-09-11 14:00:00  900
2012-09-11 13:45:00  YYYYYY  2012-09-11 14:00:00  600
2012-09-11 14:00:00  XXXXXX  2012-09-11 14:15:00  250
2012-09-11 14:00:00  YYYYYY  2012-09-11 14:15:00  95

正如您所看到的,每个登录的代理都会获得每15分钟写一次的记录。我正在尝试做的是获取这些记录并添加日志。现在,如果该表仅包含每个代理1天的记录,那么这将是一件非常容易的事情,但是......

该表包含每个代理多天15分钟间隔的记录: - (

我遇到麻烦的是弄清楚如何每天分组和添加代理间隔并返回每日总数。

所以我想最终得到像

这样的东西
2012-09-10 XXXXXX 1185
2012-09-11 XXXXXX 1185
2012-09-10 YYYYYY 2000
2012-09-11 YYYYYY 1300

(我知道我的数学并没有加上上面的数据,我不能被诅咒工作:-P)

如果有人能为我找到答案,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

SELECT YEAR(BeginTimePeriodDT), 
       MONTH(BeginTimePeriodDT), 
       DAY(BeginTimePeriodDT), 
       User_ID, 
       SUM(TotalLoginTime)
FROM MyTable
GROUP BY YEAR(BeginTimePeriodDT), 
         MONTH(BeginTimePeriodDT), 
         DAY(BeginTimePeriodDT), 
         User_ID

答案 1 :(得分:1)

这应该做到

SELECT dateadd(dd,0, datediff(dd,0, beginTimePeriodDt)), UserId, SUM(TotalLoginTime)
FROM test 
group by dateadd(dd,0, datediff(dd,0, beginTimePeriodDt)), userId
order by 1, 2