Pergunta

Como posso converter isso em um decimal no SQL? Abaixo é a equação e eu recebo a resposta de 78 (inteiro), mas a resposta real é 78,6 (com um decimal) assim que eu preciso para mostrar isso, caso contrário o relatório não vai contagem até 100%

(100 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
Foi útil?

Solução

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

feio, mas funciona.

Outras dicas

Tente isto:

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

Pelo menos no MySQL (se isso ajuda), se você quiser usar números flutuador você tinha que usar um campo de tipo float, não os campos int regular.

Basta adicionar um decimal para o 100

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

Este forças todo o processamento para acontecer em jangadas ... se quiser que o resultado final como texto, e truncado para a exibição de apenas uma casa decimal, use a função Str

Str( 100.0 * [TotalVisit1]/[TotalVisits], 4, 1 ) AS Visit1percent
CAST(ROUND([TotalVisit1]*100.0/[TotalVisits],2)as decimal(5,2)) as Percentage


Não feio e trabalhar melhor e rápido, divirta-se!

É provavelmente um exagero para fazer isso, mas você pode querer considerar lançar todos os valores para carros alegóricos para garantir a precisão em todas as fases.

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

Note, você realmente precisa colocar o código aqui para o caso de que TotalVisits == 0 ou você terá uma divisão por 0 resposta.

SELECT(ROUND(CAST(TotalVisit1 AS DECIMAL)/TotalVisits,1)) AS 'Visit1percent'

Isso irá retornar um decimal ea rodada vai arredondar para um dígito. Assim, no seu caso, você poderia obter 76,6. Se você não quer quaisquer dígitos mudar o 1 a 0 e se você quiser dois dígitos alterá-lo para 2.

Tente com isso, não redondo e str ou Over (). eu encontrei este como uma maneira mais simples de fazê-lo.

cast((count(TotalVisit1) * 100.0) /TotalVisits as numeric(5,3))  as [Visit1percent]

Você pode alterar o número de casas decimais como você deseja

por exemplo. numérico (5,2) ou numérica (5,4)

Isto pode não tratar você emitir diretamente, mas quando você volta um conjunto de números para exibição que você nunca está garantido para obter números que adicionam a 100 a menos que você tomar precauções especiais. Por exemplo, o arredondamento 33.33333, 33.33333 e 33.33333 vai deixá-lo um curto na soma, assim que a coisa lógica a fazer é modificar o percentual para o maior valor no conjunto a ter em conta qualquer diferença.

Aqui está uma maneira de fazer isso no Oracle SQL usando funções analíticas e uma factoring subconsulta (COM) Cláusula para gerar dados amostra.

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                     

Em MS Access Você pode usar o ROUND função SQL (número, número de casas decimais), ele irá arredondar o número para o número dado de decimais:

ROUND ((100 * [TotalVisit1] / [TotalVisits]), 1) COMO Visit1percent

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top