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