LEAST: from Tableau to SQL

Returns the least non-null argument. Below, 8 sample rows go through the calculation and through the SQL, and both return the same numbers.

Calculated field

LEAST([amount], [other])

Sample data

idamountunitsscoreother
1-2.52-0.83
20004
31.530.252
4440.58
5950.811
6166114
7null7null9
848-0.5null

The same calculation as SQL

SELECT least(amount,other) AS result FROM input ORDER BY id

Runs the example above.

Result

idamountunitsscoreresult
1-2.52-0.8-2.5
20000
31.530.251.5
4440.54
5950.89
6166114
7null7null9
848-0.54

Same rows from the calculation and from the SQL in DuckDB.

Where a naive translation goes wrong

  • Null-propagating extrema discard a present argument.

    Naive SQL

    SELECT CASE WHEN amount IS NULL OR other IS NULL THEN NULL ELSE least(amount,other) END AS result FROM input ORDER BY id
    idamountunitsscoreresult
    1-2.52-0.8-2.5
    20000
    31.530.251.5
    4440.54
    5950.89
    6166114
    7null7nullnull
    848-0.5null

    Matches the calculation

    SELECT least(amount,other) AS result FROM input ORDER BY id
    idamountunitsscoreresult
    1-2.52-0.8-2.5
    20000
    31.530.251.5
    4440.54
    5950.89
    6166114
    7null7null9
    848-0.54

Signature

LEAST(number, number, ...)