2018-07-08 8:19 GMT+02:00 Cecil Westerhof <cldwester...@gmail.com>: > I thought there was a problem with RANDOM. I used: > , ABS(RANDOM()) / CAST(1.4E18 AS INTEGER) AS Randomiser > > And it seemed I got a lot of threes. > > To check this I used: > SELECT Randomiser > , COUNT(*) AS Count > FROM ( > SELECT date > , ABS(RANDOM()) / CAST(1.4E18 AS INTEGER) AS Randomiser > FROM CPUUsage > ORDER BY date > ) > GROUP BY Randomiser > ORDER BY Randomiser > > And this gave results like: > "0" "165491" > "1" "166270" > "2" "166207" > "3" "165727" > "4" "165619" > "5" "165749" > "6" "98042" > > So 6 is created less often as 0 - 5, but that is in my use case not a > problem. > > This worked for me because I have a big table CPUUsage. But if I would not > have, is there another way to to do this? >
By the way better select is: SELECT Randomiser , COUNT(*) AS Count FROM ( SELECT date , CAST(ABS(RANDOM()) / (9.223E18 / 7) AS INTEGER) AS Randomiser FROM CPUUsage ORDER BY date ) GROUP BY Randomiser ORDER BY Randomiser This gives: "0" "156204" "1" "157032" "2" "155636" "3" "156399" "4" "156256" "5" "155480" "6" "156073" "7" "52" This is much better. Only very rarely you get a seven you do not want. (Again in my case not really a problem.) Because in my case I use Randomiser to get a small subset of the records, this can be solved with: SELECT Randomiser , COUNT(*) AS Count FROM ( SELECT date , CAST(ABS(RANDOM()) / (9.223E18 / 7) AS INTEGER) AS Randomiser FROM CPUUsage ORDER BY date ) WHERE Randomiser <> 7 GROUP BY Randomiser ORDER BY Randomiser Then I get something like: "0" "155806" "1" "156270" "2" "156473" "3" "155748" "4" "155828" "5" "156196" "6" "156733" -- Cecil Westerhof _______________________________________________ sqlite-users mailing list sqlite-users@mailinglists.sqlite.org http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users