Невозможно найти процент в SQL Server - PullRequest
2 голосов
/ 09 июля 2019

У меня следующий код SQL, и он не генерирует процентное значение

    declare @prcnt numeric(5,2)=0;
    declare @nulls int=15,@total_col int=24;
    select @prcnt=(@nulls/@total_col)*100;
    select @prcnt;

Здесь можно увидеть скрипку здесь .

Ответы [ 5 ]

5 голосов
/ 09 июля 2019
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;
3 голосов
/ 09 июля 2019

Умножение на 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 голосов
/ 09 июля 2019

Результат равен нулю, потому что @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;
1 голос
/ 09 июля 2019

@ 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;
1 голос
/ 09 июля 2019

попробуйте, как показано ниже, умножив 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...