С учетом приведенных ниже таблиц, каков наилучший подход (в обоих вариантах сервера):
Сгруппировать все строки в течение минуты / часа / дня и получить максимальный столбец "CounterC"?
Пример: Между «сейчас» и «сейчас» - 1 день, получите Макс (CounterC) за каждый час.Пример 2: Между «сейчас» и «сейчас» - 30 дней, получите Max (CounterC) для каждого дня.
Очевидно, что строки должны быть сгруппированы, но как?
MS SQL
CREATE TABLE [dbo].[DE0000000D102D1D](
[index] [bigint] IDENTITY(1,1) NOT NULL,
[TimeStamp] [datetime] NOT NULL,
[CounterA] [bigint] NOT NULL,
[CounterB] [bigint] NOT NULL,
[CounterC] [bigint] NOT NULL,
[CounterD] [bigint] NOT NULL,
)
MySQL
CREATE TABLE `de0000000d102d1d` (
`index` bigint(20) NOT NULL AUTO_INCREMENT,
`TimeStamp` datetime NOT NULL,
`CounterA` bigint(20) NOT NULL,
`CounterB` bigint(20) NOT NULL,
`CounterC` bigint(20) NOT NULL,
`CounterD` bigint(20) NOT NULL,
PRIMARY KEY (`index`)
)
Некоторые примеры данных:
index TimeStamp CounterA CounterB CounterC CounterD
----- ----------------------- -------- -------- --------- --------
1 2011-03-07 14:25:32.000 0 1 347406352 916
2 2011-03-07 14:26:32.000 0 1 347407169 916
3 2011-03-07 14:27:32.000 0 1 347407978 916
4 2011-03-07 14:28:31.000 0 1 347408617 916
5 2011-03-07 14:29:31.000 0 1 347409087 916
6 2011-03-07 14:30:30.000 0 1 347409557 916
7 2011-03-07 14:31:09.000 0 1 347409845 916
Заранее спасибо!
Редактировать: Это на самом деле Макс (CounterC) Iхочу за каждый интервал, а не сумму.