Помогите с статистическим запросом TSQL - PullRequest
0 голосов
/ 19 июля 2011

У меня есть несколько таблиц, которые собирают данные для внутреннего использования, но я хочу записать все данные в другую таблицу, из которой я могу легко запрашивать статистические данные без объединений, группирования и другого беспорядка. Этот запрос на выборочную вставку будет выполняться как план обслуживания каждые 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 Ответ

1 голос
/ 19 июля 2011

В вашем описании все, что вам не хватает, это код для округления DATETIME до нижнего 30-минутного интервала. DATEDIFF и DATEADD должны помочь вам здесь ...

GROUP BY
  DATEADD(MINUTE, DATEDIFF(MINUTE, 0, [date]) - (DATEDIFF(MINUTE, 0, [date]) % 30), 0),
  siteID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...