Quite easy to do with a CTE, like this:

WITH BDT(startDateTime,endDateTime,IntervalSeconds) AS (
   SELECT '2015-11-17 00:00:00', '2015-11-18 00:00:00', '+600 seconds'
), TIV(startTime,endTime) AS (
     SELECT startDateTime, datetime(startDateTime,IntervalSeconds) FROM BDT
   UNION ALL
     SELECT endTime, datetime(endTime,IntervalSeconds) FROM TIV,BDT 
WHERE endTime < endDateTime
)
SELECT TIV.startTime, avg(DSR.data) AS dataAvg
   FROM TIV
   LEFT JOIN dataStreamRecord AS DSR ON DSR.datetime >= TIV.startTime 
AND DSR.datetime < TIV.endTime
  WHERE fwParameterID = 1074
  GROUP BY TIV.startTime
  ORDER BY TIV.startTime ASC
;

Of course, if you do not wish to list 10-minute intervals where there 
wasn't any activity, then add " AND DSR.dateTime IS NOT NULL" to the 
WHERE clause.

You can change the start and end dates and the interval by changing just 
the first line inside the CTE.   Just inject those values via your code.

Let us know if there's anything unclear or not working as expected,
Cheers!
Ryan



On 2015/11/18 6:15 PM, Andrew Stewart wrote:
> Hi,
>                  I am trying to generate 10 minute average data for a day 
> from a data set.  Table is created by the following:
>
> CREATE TABLE dataStreamRecord (fwParameterID INTEGER NOT NULL, dateTime 
> DATETIME NOT NULL, data INTEGER NOT NULL);
>
> Sample Data
> fwParameterID,dateTime,data
> 1074,2015-11-17 00:00:01,8192
> 1074,2015-11-17 00:33:18,0
> 1074,2015-11-17 00:33:19,8192
> 1074,2015-11-17 00:41:00,0
> 1074,2015-11-17 00:41:01,8192
> 1074,2015-11-17 01:11:34,0
> 1074,2015-11-17 01:11:35,8192
> 1074,2015-11-17 01:19:10,0
> 1074,2015-11-17 01:19:11,8192
> 1074,2015-11-17 01:26:44,0
> 1074,2015-11-17 01:26:45,8192
> 1074,2015-11-17 01:34:24,0
> 1074,2015-11-17 01:34:25,8192
> 1074,2015-11-17 02:12:44,0
> 1074,2015-11-17 02:12:45,8192
> 1074,2015-11-17 02:43:21,0
> 1074,2015-11-17 02:43:22,8192
> 1074,2015-11-17 03:06:19,0
> 1074,2015-11-17 03:06:20,8192
> 1074,2015-11-17 03:37:02,0
> 1074,2015-11-17 03:37:03,8192
> 1074,2015-11-17 05:08:58,0
> 1074,2015-11-17 05:08:59,8192
> 1074,2015-11-17 05:16:35,0
> 1074,2015-11-17 05:16:36,8192
> 1074,2015-11-17 05:16:37,0
> 1074,2015-11-17 05:16:38,8192
> 1074,2015-11-17 06:25:29,0
> 1074,2015-11-17 06:25:30,8192
> 1074,2015-11-17 07:41:58,0
> 1074,2015-11-17 07:41:59,8192
> 1074,2015-11-17 07:43:02,0
> 1074,2015-11-17 07:43:03,8192
> 1074,2015-11-17 07:43:19,0
> 1074,2015-11-17 07:43:20,8192
> 1074,2015-11-17 07:43:55,0
> 1074,2015-11-17 07:43:56,8192
> 1074,2015-11-17 07:44:31,0
> 1074,2015-11-17 07:44:33,8192
> 1074,2015-11-17 08:20:43,0
> 1074,2015-11-17 08:20:44,8192
> 1074,2015-11-17 08:27:49,0
> 1074,2015-11-17 08:27:50,8192
> 1074,2015-11-17 08:35:23,0
> 1074,2015-11-17 08:35:24,8192
> 1074,2015-11-17 09:04:47,0
> 1074,2015-11-17 09:04:48,8192
> 1074,2015-11-17 09:13:35,0
> 1074,2015-11-17 09:13:36,8192
> 1074,2015-11-17 09:17:41,0
> 1074,2015-11-17 09:17:42,8192
>
> Query for generating the above data
> SELECT [fwParameterID], [dateTime], [data]
> FROM dataStreamRecord
> WHERE fwParameterID = 1074 AND
> dateTime >= '2015-11-17 00:00:00' AND
> dateTime < '2015-11-18 00:00:00'
> ORDER BY dateTime ASC
>
> Any assistance in generating a query to do 10 minute averages for 'data' on 
> November 17 for fwParameterID 1074 would be appreciated.
>
>
> Thanks,
> Andrew S
> Notice: This electronic transmission contains confidential information, 
> intended only for the person(s) named above. If you are not the intended 
> recipient, you are hereby notified that any disclosure, copying, 
> distribution, or any other use of this email is strictly prohibited. If you 
> have received this transmission by error, please notify us immediately by 
> return email and destroy the original transmission immediately and all copies 
> thereof.
> _______________________________________________
> sqlite-users mailing list
> sqlite-users at mailinglists.sqlite.org
> http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to