我有以下SQL
代码,它不会产生百分比值
declare @prcnt numeric(5,2)=0;
declare @nulls int=15,@total_col int=24;
select @prcnt=(@nulls/@total_col)*100;
select @prcnt;
可以看到here的小提琴。
答案 0 :(得分:5)
declare @prcnt decimal(8,4)=0;
declare @nulls decimal(8,4)=15,@total_col decimal(8,4)=24;
select @prcnt=(@nulls/@total_col)*100;
select @prcnt;
答案 1 :(得分:3)
结果为零,因为@null和@total_col都是整数。 15除以24所得的结果是0.625,然后将其转换为零,因为它们是整数。使用浮点或将其中之一转换为浮点。
declare @prcnt numeric(5,2)=0;
declare @nulls int=15,@total_col int=24;
select @prcnt=(cast(@nulls as numeric(19,4))/@total_col)*100;
select @prcnt;
答案 2 :(得分:3)
乘以1.0或使用数据类型十进制即可解决问题。我更喜欢* 1.0
declare @prcnt numeric(5,2)=0;
declare @nulls int=15,@total_col int=24;
select @prcnt=(1.0*@nulls/@total_col)*100;
select @prcnt;
答案 3 :(得分:1)
尝试如下,此处通过将1.00引擎乘以隐式强制转换
declare @prcnt numeric(5,2)=0;
declare @nulls int=15,@total_col int=24;
select @prcnt=(@nulls*1.00/@total_col)*100;
select @prcnt;
或进行显式转换
declare @prcnt numeric(5,2)=0;
declare @nulls int=15,@total_col int=24;
select @prcnt=(cast( @nulls as float)/@total_col)*100;
select @prcnt;
答案 4 :(得分:1)
@nulls和@total_col也应为数字:
DECLARE @prcnt numeric(5,2)=0;
DECLARE @nulls numeric(5,2)=15, @total_col numeric(5,2)=24;
SELECT @prcnt=(@nulls/@total_col)*100 ;
SELECT @prcnt;
或者您可以在划分时投射它们:
DECALRE @prcnt numeric(5,2)=0;
DECLARE @nulls int=15,@total_col int=24;
SELECT @prcnt=(CAST(@nulls as numeric(5,2))/CAST(@total_col as numeric(5,2)))*100;
SELECT @prcnt;