I have a query that I use to randomly select a set of records, but an older
one should have a higher change and a never used record is selected before
a used record. For this I use a query that looks a bit like this:
    SELECT "Last Used"
    ,      Randomiser
    ,      Randomiser
    ,      Randomiser + IFNULL(JULIANDAY("Last Used"), 0)
    FROM (
        SELECT   *
        ,        abs(random()) / CAST(1.4E18 AS INTEGER) AS Randomiser
        FROM     foo
    )
    ORDER BY randomiser + IFNULL(JULIANDAY("Last Used"), 0) ASC
    LIMIT    5

But Randomiser is calculated every-time it is used. For example this just
gave:
    "2017-10-20"    "1"    "1"    "2458046.5"
    "2017-10-18"    "0"    "3"    "2458047.5"
    "2017-10-19"    "5"    "5"    "2458047.5"
    "2017-10-17"    "2"    "5"    "2458048.5"
    "2017-10-20"    "3"    "1"    "2458048.5"

Is there a way to generate Randomiser in such a way it is only calculated
once pro record?

-- 
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to