SQL-запрос для запуска Среднее, Минимум, Максимум, Итого, стандартное отклонение, подсчет каждые 5 минут

У меня есть таблица со временем (столбец) и мощностью (столбец). Я хочу рассчитать различные наборы результатов для следующих данных таблицы:

Моя таблица:

[timestamp]                         [power]

2016-01-06 13:32:27                    1
2016-01-06 13:33:27                    2
2016-01-06 13:34:27                    3
2016-01-06 13:35:27                    4
2016-01-06 13:36:27                    5
2016-01-06 13:37:27                    6
2016-01-06 13:38:27                    7
2016-01-06 13:39:27                    8
2016-01-06 13:40:27                    9
2016-01-06 13:41:27                    10

Всего как:

 [timestamp]                         [power]              Total

2016-01-06 13:32:27                    1                    1
2016-01-06 13:33:27                    2                    3
2016-01-06 13:34:27                    3                    6
2016-01-06 13:35:27                    4                    10
2016-01-06 13:36:27                    5                    15
2016-01-06 13:37:27                    6                    21
2016-01-06 13:38:27                    7                    28
2016-01-06 13:39:27                    8                    36
2016-01-06 13:40:27                    9                    45
2016-01-06 13:41:27                    10                   55

Всего за каждые 5 минут как:

[timestamp]                         [power]              Total_every_5minutes

--2016-01-06 13:32:27                    1                    1
--2016-01-06 13:33:27                    2                    3
--2016-01-06 13:34:27                    3                    6
--2016-01-06 13:35:27                    4                    10
2016-01-06 13:36:27                    5                    15
--2016-01-06 13:37:27                    6                    21
--2016-01-06 13:38:27                    7                    28
--2016-01-06 13:39:27                    8                    36
2016-01-06 13:40:27                    9                    45

Точно так же я хочу рассчитать среднее, минимальное, максимальное, стандартное отклонение и количество. На данный момент я написал запрос, который добавит столбец с

Обратите внимание: я не должен писать хранимую процедуру. Поскольку у меня есть приложение Windows, в котором пользователь выбирает базу данных, и в нем будут перечислены таблицы, из перечисленных таблиц пользователь выбирает столбцы, а в определенном столбце он устанавливает для расчета общего количества или т. Д. После выбора запрос строится. и запрос выполнится и привяжет результаты к datagridview.

IF OBJECT_ID('tempdb..#mytemptable') IS NOT NULL DROP TABLE #mytemptable;
SELECT  SUM( CAST ([power] AS bigint)  ) AS power_TOTAL  INTO #MYTEMPTABLE 
  FROM ( SELECT t1.[timestamp], t1.[power] FROM [REPORT] t1 ) TEMPTABLE
SELECT t1.[timestamp], t1.[power], RM_temp.* FROM [REPORT] t1 , #MYTEMPTABLE RM_temp;

person Tan    schedule 18.05.2016    source источник
comment
Это поможет: stackoverflow.com/a/9814970   -  person Siraj ul Haq    schedule 18.05.2016
comment
Также предоставьте структуру и данные.   -  person Siraj ul Haq    schedule 18.05.2016
comment
я предоставил данные, извините не понял   -  person Tan    schedule 18.05.2016
comment
да, ваши данные в порядке, но зачем выбирать только эти две строки   -  person mohan111    schedule 18.05.2016
comment
Я имею в виду, что если бы вы могли создать SQLFiddle, было бы легко ответить. И вместо вставки в другую таблицу, если достигнут только желаемый результат.   -  person Siraj ul Haq    schedule 18.05.2016
comment
@ mohan111 mohan111 большое количество данных будет передано на сервер sql с помощью программного обеспечения scada. мое приложение будет генерировать отчеты, которые будут разными для разных сайтов, например, мой клиент хочет просмотреть записи за 01.01.2016 01:00:00 до 01.01.2016 02:00:00 записи могут отличаться от от сайта к сайту в зависимости от того, как Scada настроена для отправки данных на сервер. scada может отправлять 10 записей в минуту, из которых все не важны. у них есть некоторые расчеты, которые не должны превышать ... и т.д. и т.п.   -  person Tan    schedule 18.05.2016
comment
@SirajulHaq я попытаюсь создать sqlfiddle, никогда раньше этого не делал, хотя я попробую. Спасибо   -  person Tan    schedule 18.05.2016


Ответы (1)


может быть, это сработает для вас на основе ваших данных

DECLARE @Table1  TABLE 
    ( timestamp  varchar(19),  power  int)
;

INSERT INTO @Table1
    ( timestamp ,  power )
VALUES
    ('2016-01-06 13:32:27', 1),
    ('2016-01-06 13:33:27', 2),
    ('2016-01-06 13:34:27', 3),
    ('2016-01-06 13:35:27', 4),
    ('2016-01-06 13:36:27', 5),
    ('2016-01-06 13:37:27', 6),
    ('2016-01-06 13:38:27', 7),
    ('2016-01-06 13:39:27', 8),
    ('2016-01-06 13:40:27', 9),
    ('2016-01-06 13:41:27', 10)
;


Select [timestamp],[power] from (
SELECT timestamp, power , RunningTotal = power + COALESCE(
(
  SELECT SUM(power)
    FROM @Table1 AS i
    WHERE i.timestamp < o.timestamp), 0
)
FROM @Table1 AS o)TT where  exists (Select * from (select power * 5 ID from @Table1) T WHERE T.id = TT.RunningTotal )
ORDER BY timestamp;
person mohan111    schedule 18.05.2016