Как я вычисляю проценты с десятичными числами в SQL?

Вы должны быть осторожны со своими пробелами после = при установке переменных, также, чтобы использовать delayedexpansion, вам необходимо включить его. Вы также задаете тренды на линии с пробелами в настройках переменных, всегда заключайте в свои двойные кавычки свой набор переменных, как я сделал ниже. Попробуйте это:

@echo off
setlocal enabledelayedexpansion
set "topic[0]=USB"
set "topic[1]=hello"
set "topic[2]=mic"
set "topic[3]=Operators"
set "file=C:\Users\User\Android_Studio_Projects\"

for /l %%n in (0,1,3) do ( 
    echo cd %file%!topic[%%n]!
)
pause

Вам не нужно снова устанавливать %file% внутри цикла, видя, что ничего не изменилось. Это покажет вам только команду, чтобы перейти к каждому каталогу, просто удалите echo в цикле.

11
задан LeppyR64 3 February 2017 в 14:59
поделиться

6 ответов

convert(decimal(5,2),(100 * convert(float,[TotalVisit1])/convert(float,[TotalVisits]))) AS Visit1percent

Ужасный, но это работает.

8
ответ дан 3 December 2019 в 03:19
поделиться

Попробуйте это:

(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
19
ответ дан 3 December 2019 в 03:19
поделиться

По крайней мере, в MySQL (если это помогает), если Вы хотите использовать числа плавающие, необходимо было использовать плавающее поле типа, не обычные международные поля.

1
ответ дан 3 December 2019 в 03:19
поделиться

Просто добавьте десятичное число к 100

(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent

это вынуждает всю обработку произойти в плаваниях..., если Вы хотите окончательный результат, поскольку текст, и усеченный для дисплея только к одному десятичному разряду, использует функцию ул.

Str( 100.0 * [TotalVisit1]/[TotalVisits], 4, 1 ) AS Visit1percent
1
ответ дан 3 December 2019 в 03:19
поделиться

Вероятно, излишество, чтобы сделать это, но можно хотеть полагать, что кастинг всех значений к плаваниям гарантирует точность во всех фазах.

(100.0 * ( [TotalVisit1]+0.0 )/([TotalVisits]+0.0) ) as Visit1percent

Отметьте, действительно необходимо вставить код здесь для случая, что TotalVisits == 0 или Вы получите подразделение 0 ответами.

0
ответ дан 3 December 2019 в 03:19
поделиться

Это не могло бы обратиться к Вам проблема непосредственно, но когда Вы круглый ряд чисел для дисплея, Вы, как никогда гарантируют, не получите числа, которые добавляют к 100, если Вы не принимаете специальные меры предосторожности. Например, округление 33.33333, 33.33333 и 33.33333 собирается оставить Вас одним коротким на сумме, таким образом, логическая вещь сделать состоит в том, чтобы изменить процент для самого большого значения в наборе для принятия во внимание любое различие.

Вот способ сделать это в Oracle SQL с помощью аналитических функций и факторинга подзапроса (С) пунктом для генерации демонстрационных данных.

with data as (select 25 num from dual union all
              select 25     from dual union all
              select 25     from dual)
select num, 
case
   when rnk = 1
   then 100 - sum(pct) over (order by rnk desc
                             rows between unbounded preceding
                                      and         1 preceding)
   else pct
end pct
from
   (
   select num,
          round(100*ratio_to_report(num) over ()) pct,
          row_number() over (order by num desc) rnk
   from data
   )
/


NUM                    PCT                    
---------------------- ---------------------- 
25                     33                    
25                     33                     
25                     34                     
-1
ответ дан 3 December 2019 в 03:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: