Redshift division result does not include decimals

When mixing data types the order counts

Note that the order of the elements in a math expression counts for the data type of the result.
Let's assume that we intend to calculate the percentage unit_sales/total_sales where both columns (or numbers) are integers.

See and try with this code here.

-- Some dummy table
drop table if exists sales;
create table sales as 
    select 3 as unit_sales, 9 as total_sales;

-- The calculations
select
    unit_sales/total_sales*100,   --> 0 (integer)
    unit_sales/total_sales*100.0, --> 0.0 (float)
    100.0*unit_sales/total_sales  --> 33.3 (float and expected result)
from sales;

The output

  0 | 0.0 | 33.33
  1. The first column is 0 (integer) because of 3/9=0 in an integer division.
  2. The second column is 0.0 because SQL first got the integer 0 (3/9), and later, SQL converts it to float in order to perform the multiplication by 100.0.
  3. The expected result.
    The non-integer 100.0 at the beginning of the expression force a non-integer calculation.

It is integer division. Make sure that at least one argument is: NUMERIC(accurate data type)/FLOAT(caution: it's approximate data type):

/ division (integer division truncates the result)

select 1701.0 / 84936;
-- or
SELECT 1.0 * 1701 / 84936;
-- or
SELECT CAST(1701 AS NUMERIC(10,4))/84936;

DBFiddle Demo