我希望有人可以回答这个关于我要写的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)
如果有人能为我找到答案,我将不胜感激。
答案 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