Very interesting.  Thank you David.  I have never used a recursive CTE
before, so I am still trying to understand exactly how it works.  But it
does work, so I will definitely take a closer look.  Thank you.

Balaji Ramanathan

On Tue, Nov 14, 2017 at 6:00 AM, <
sqlite-users-requ...@mailinglists.sqlite.org> wrote:

> ---------- Forwarded message ----------
> From: David Raymond <david.raym...@tomtom.com>
> To: SQLite mailing list <sqlite-users@mailinglists.sqlite.org>
> Cc:
> Bcc:
> Date: Mon, 13 Nov 2017 17:20:58 +0000
> Subject: Re: [sqlite] Running sums and averages
> As other folks have mentioned, doing it in an external language is going
> to be easiest.
>
> That being said, CTE's are almost a full language in themselves.
>
> I'm just gonna go with 1 value here for the example, but how about
> something like...
>
> with recursive foo (RowNumber, F1, sumF1, OverallAvgF1, avgF1, F1notNull)
> as(
>   select
>   rowNumber,
>   F1,
>   ifnull(F1, 0.0),
>   ifnull(F1, 0.0),
>   ifnull(F1, 0.0),
>   F1 is not null
>   from mytable where RowNumber = 1
>
>   union all
>
>   select
>   mytable.RowNumber,
>   mytable.F1,
>   foo.sumF1 + ifnull(mytable.F1, 0.0),
>   (foo.sumF1 + ifnull(mytable.F1, 0.0)) / mytable.RowNumber,
>   (foo.sumF1 + ifnull(mytable.F1, 0.0)) / (foo.F1notNull + (mytable.F1 is
> not null)),
>   foo.F1notNull + (mytable.F1 is not null)
>
>   from
>
>   foo inner join mytable on mytable.RowNumber = foo.RowNumber + 1)
>
> select RowNumber, F1, sumF1, OverallAvgF1, avgF1 from foo;
>
>
>
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to