Вы должны быть осторожны со своими пробелами после =
при установке переменных, также, чтобы использовать 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
в цикле.
convert(decimal(5,2),(100 * convert(float,[TotalVisit1])/convert(float,[TotalVisits]))) AS Visit1percent
Ужасный, но это работает.
Попробуйте это:
(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
По крайней мере, в MySQL (если это помогает), если Вы хотите использовать числа плавающие, необходимо было использовать плавающее поле типа, не обычные международные поля.
Просто добавьте десятичное число к 100
(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
это вынуждает всю обработку произойти в плаваниях..., если Вы хотите окончательный результат, поскольку текст, и усеченный для дисплея только к одному десятичному разряду, использует функцию ул.
Str( 100.0 * [TotalVisit1]/[TotalVisits], 4, 1 ) AS Visit1percent
Вероятно, излишество, чтобы сделать это, но можно хотеть полагать, что кастинг всех значений к плаваниям гарантирует точность во всех фазах.
(100.0 * ( [TotalVisit1]+0.0 )/([TotalVisits]+0.0) ) as Visit1percent
Отметьте, действительно необходимо вставить код здесь для случая, что TotalVisits == 0 или Вы получите подразделение 0 ответами.
Это не могло бы обратиться к Вам проблема непосредственно, но когда Вы круглый ряд чисел для дисплея, Вы, как никогда гарантируют, не получите числа, которые добавляют к 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