14

これをSQLで10進数に変換するにはどうすればよいですか? 以下は方程式で、答えは 78 (整数) になりますが、実際の答えは 78.6 (小数を含む) であるため、これを表示する必要があります。そうしないと、レポートが 100% に集計されません

(100 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
4

11 に答える 11

22

これを試して:

(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
于 2008-12-30T15:34:40.067 に答える
8
convert(decimal(5,2),(100 * convert(float,[TotalVisit1])/convert(float,[TotalVisits]))) AS Visit1percent

醜いですが、うまくいきます。

于 2008-12-30T15:41:30.663 に答える
1

少なくとも MySQL では (それが役立つ場合)、浮動小数点数を使用する場合は、通常の int フィールドではなく、浮動小数点型フィールドを使用する必要がありました。

于 2008-12-30T15:34:18.867 に答える
1

100に小数を足すだけ

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

これにより、すべての処理が浮動小数点数で強制的に行われます...最終出力をテキストとして表示し、表示のために小数点以下1桁に切り捨てたい場合は、Str関数を使用します

Str( 100.0 * [TotalVisit1]/[TotalVisits], 4, 1 ) AS Visit1percent
于 2008-12-30T15:49:20.273 に答える
0
SELECT(ROUND(CAST(TotalVisit1 AS DECIMAL)/TotalVisits,1)) AS 'Visit1percent'

これは小数を返し、ROUND はそれを 1 桁に丸めます。したがって、あなたの場合は76.6になります。数字が不要な場合は 1 を 0 に変更し、2 桁が必要な場合は 2 に変更します。

于 2013-05-29T21:36:34.793 に答える
0

これを行うのはおそらくやり過ぎですが、すべてのフェーズで精度を確保するために、すべての値を float にキャストすることを検討することをお勧めします。

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

TotalVisits == 0 の場合、ここにコードを挿入する必要があることに注意してください。そうしないと、0 による除算の回答が得られます。

于 2008-12-30T15:40:41.303 に答える
-1

これは問題に直接対処しないかもしれませんが、表示用に一連の数値を四捨五入すると、特別な予防策を講じない限り、合計が 100 になる数値が得られることは保証されません。たとえば、33.33333、33.33333、および 33.33333 を四捨五入すると、合計が 1 つ不足するため、セット内の最大値のパーセンテージを変更して差を考慮に入れるのが論理的です。

これは、Oracle SQL で分析関数とサブクエリ ファクタリング (WITH) 句を使用してサンプル データを生成する方法です。

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                     
于 2008-12-30T16:39:35.490 に答える
-1

ms Access では、SQL 関数 ROUND(number, number of decimals) を使用できます。これは、数値を指定された小数点以下の桁数に丸めます。

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

于 2013-08-22T21:26:30.107 に答える