J'essaie de faire quelque chose de très simple pour calculer une sorte de pourcentage entre deux colonnes dans Redshift. Cependant, lorsque j'exécute la requête avec un exemple, le résultat est tout simplement zéro car les décimales ne sont pas couvertes.
code:
select 1701 / 84936;
Production:
J'ai essayé :
select cast(1701 / 84936 as numeric (10,10));
mais le résultat était 0.0000000000
.
Comment pourrais-je résoudre cette chose idiote?
C'est une division entière. Assurez-vous qu'au moins un argument est: NUMERIC
(type de données précis)/FLOAT
(attention: il s'agit d'un type de données approximatif):
/division (la division entière tronque le résultat)
select 1701.0 / 84936;
-- or
SELECT 1.0 * 1701 / 84936;
-- or
SELECT CAST(1701 AS NUMERIC(10,4))/84936;
Notez également que l'ordre des nombres dans l'expression mathématique compte.
Supposons que nous avons l'intention de calculer le pourcentage unit_sales/total_sales
où les deux colonnes (ou nombres) sont des entiers.
Le code ( 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;
Le résultat
0 | 0.0 | 33.33