Thanks, I do know how to calculate the SD in code, but I thought in this particular case it might be faster to do this in SQL. Only problem is the square root and for that reason I will test this in code as well and see how it compares with SQL.
I found a way to get the one from last step, so that is without doing the final square root step. Note that this has to do with a number of systolic blood pressure readings and I am actually taking the last 6 and that is useful as due to treatment the SD often will be less for the later values: UPDATE QR3PARAMS SET AVG_BP = (SELECT AVG(SYST) FROM (SELECT SYSTOLIC AS SYST FROM BP WHERE ID = QR3PARAMS.ID ORDER BY ENTRY_DATE DESC LIMIT 6)) UPDATE QR3PARAMS SET DEV_BP = (SELECT AVG(SYST * SYST) FROM (SELECT SYSTOLIC - QR3PARAMS.AVG_BP AS SYST FROM BP WHERE ID = QR3PARAMS.ID ORDER BY ENTRY_DATE DESC LIMIT 6)) RBS On Sat, Oct 12, 2019 at 4:21 PM Keith Medcalf <kmedc...@dessus.com> wrote: > > The Standard Deviation of the Population is the Square Root of the mean of > the second order differences. > > For your input values, you calculate the mean. > Then you calculate the mean of the square of the difference between each > value and the mean of the values. > Then you take the square root of that. > > You can also compute it using a running calculation (generally more > accurate on IEEE754 hardware). > > So just retrieve the values you are interested in and do the calculations > in your application. That is, if you only want FOUR values, then write a > query that returns only those FOUR values, and use those to computer the > answer. While you can do all the calculations (including the Square Root) > in SQL, it is likely to be horrendously slow. > > However, before you can do *ANYTHING* else, you need to be able to > demonstrate that you can write a select statement that retrieves the values > you want to work on, only the values you want to work on, and nothing but > the values you want to work on. Having 47,000 values and sauing that you > would like to find the standard deviation of some set of four of them is > entertaining, but not useful in any way. > > -- > The fact that there's a Highway to Hell but only a Stairway to Heaven says > a lot about anticipated traffic volume. > > >-----Original Message----- > >From: sqlite-users <sqlite-users-boun...@mailinglists.sqlite.org> On > >Behalf Of Bart Smissaert > >Sent: Saturday, 12 October, 2019 08:09 > >To: General Discussion of SQLite Database <sqlite- > >us...@mailinglists.sqlite.org> > >Subject: [sqlite] Standard deviation last x entries > > > >How do I get the standard deviation of the last 4 entries (there could be > >less than 4) of an integer column grouped by an integer ID entry in > >another > >column in the same table. > > > >So data could be like this: > > > >ID xValue > >---------------- > >1 130 > >1 120 > >1 140 > >1 100 > >1 110 > >2 140 > >2 130 > >2 150 > > > >I know that SQLite doesn't have the SQRT function (and I can't make a UDF > >as I am doing this in an Android phone app) but I can do this last step > >in > >code. > > > >RBS > >_______________________________________________ > >sqlite-users mailing list > >sqlite-users@mailinglists.sqlite.org > >http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > > > > _______________________________________________ > sqlite-users mailing list > sqlite-users@mailinglists.sqlite.org > http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users > _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users