Redshiftの2つの列の間の一種のパーセンテージを計算するために、本当に基本的なことを実行しようとしています。ただし、例を使用してクエリを実行すると、小数がカバーされていないため、結果は単にゼロになります。
コード:
select 1701 / 84936;
出力:
私は試した :
select cast(1701 / 84936 as numeric (10,10));
しかし、結果は0.0000000000
。
どうすればこのばかげたことを解決できますか?
整数除算です。少なくとも1つの引数が:NUMERIC
(正確なデータ型)/ FLOAT
(注意:およそのデータ型)であることを確認してください:
/除算(整数除算は結果を切り捨てます)
select 1701.0 / 84936;
-- or
SELECT 1.0 * 1701 / 84936;
-- or
SELECT CAST(1701 AS NUMERIC(10,4))/84936;
また、数式の数値の順序が重要であることにも注意してください。
パーセンテージを計算するつもりだとしましょうunit_sales/total_sales
ここで、両方の列(または数値)は整数です。
コード( http://tpcg.io/RMzCvL )
-- 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,
unit_sales/total_sales*100.0,
100.0*unit_sales/total_sales
from sales;
出力
0 | 0.0 | 33.33