帮助统计TSQL查询

时间:2011-07-19 11:19:41

标签: sql sql-server-2005 tsql

我有几个表收集数据供内部使用,但我想将所有数据写入其他表,我可以从中轻松查询统计数据,无需连接,分组和其他混乱。此选择插入查询将每10分钟作为维护计划运行。

我有3个数据表

Visitors (id int, siteID int, date smalldatetime, isRead bit, isActive bit)
VisitorLastLocation (id int, visitorID int, siteID int, durationInSeconds int)
VisitorLocations(visitorLastLocationID int)
每当唯一身份访问者访问某个网站时,

新项目就会添加到访问者表格中,同样适用于VisitorLastLocation。下一次访问现有访问者将以前的位置添加到VisitorLocations并更新VisitorLastLocation表。

我需要每10分钟填一次表。

VisitorStatistics(id int, siteID int, visits int, pageViews int, isReadNumber int, isActiveNumber int, durationSum int, date smalldatetime)

所以,如果你让我说得对,我需要按原始日期(即2/2/11 13:30而不是2/2/11 13:31)和siteID分组。

你如何建议解决这个问题,完整的解决方案将非常有用......

感谢

1 个答案:

答案 0 :(得分:1)

根据您的描述,您缺少的是将DATETIME舍入到较低30分钟间隔的代码。 DATEDIFF和DATEADD应该在这里帮助你......

GROUP BY
  DATEADD(MINUTE, DATEDIFF(MINUTE, 0, [date]) - (DATEDIFF(MINUTE, 0, [date]) % 30), 0),
  siteID