RosettaCodeData/Task/Map-range/DuckDB/map-range.duckdb

10 lines
388 B
Plaintext

# x is the value to be mapped.
# The ranges, a and b, should each be an array defining the
# left-most and right-most points of the range.
create or replace function maprange(a, b, x) as
b[1] + (((x - a[1]) * (b[2] - b[1]::DOUBLE)) / (a[2] - a[1]::DOUBLE)) ;
# Example 1: a single value
# (Conversion to floating point will be automatic)
select maprange([0,10], [-1, 0], 6) as mapped;