I’ve got a table of real values that I’m trying to skew slightly for a demo table.
The table layout is effectively:
|id|purchased|shipped|delivered|
and I’m trying to multiply the right 3 columns by 85-115% so that the data still gives a reasonable representation of the original table, without giving away actual values.
In excel I’d do
=purchased*(randbetween(85,115)/100)
for each column, but I’m trying to do the same with SQL, so that each row is multiplied by a different random number within the range.
I’m fairly new to sql, and I’m trying to avoid exporting the entire table, randomising the values in Excel and re-importing the table.
Use rand()
with arithmetic:
select purchased * (0.85 + rand()*0.30)
from . . .
This does what the question asks for, which is increasing or decreasing by about 15%. The code in Excel multiplies the value by about 100.
EDIT:
The update statement would be something like:
update table t
set purchased = purchased * (0.85 + rand()*0.30)
As a final note: this doesn’t work exactly like the Excel version. One reason is that this uses continuous values rather than integer values.
Tags: mysqlmysql, sql