我正在尝试做一些非常基础的事情,来计算Redshift中两列之间的百分比。然而,当我用一个例子运行查询时,结果就是零,因为小数点没有被覆盖。
代码:
select 1701 / 84936;输出:

我试过了:
select cast(1701 / 84936 as numeric (10,10));但结果是0.0000000000。
我怎么才能解决这个愚蠢的问题呢?
发布于 2018-05-24 01:48:04
它是整数除法。确保至少有一个参数是:NUMERIC(精确数据类型)/FLOAT(注意:它是近似数据类型):
/除法(整数除法截断结果)
select 1701.0 / 84936;
-- or
SELECT 1.0 * 1701 / 84936;
-- or
SELECT CAST(1701 AS NUMERIC(10,4))/84936;发布于 2019-07-13 00:12:31
混合数据类型时,顺序会起作用
请注意,数学表达式中元素的顺序计入结果的数据类型。
让我们假设我们打算计算列(或数字)都是整数的百分比unit_sales/total_sales。
请参阅并尝试使用此代码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;输出
0 | 0.0 | 33.33表达式开头的非整数100.0强制非整数calculation.
https://stackoverflow.com/questions/50494508
复制相似问题