【发布时间】:2020-01-11 03:57:29
【问题描述】:
如何在 SQL 中将其转换为小数?下面是等式,我得到的答案是 78(整数),但真正的答案是 78.6(带小数)所以我需要显示这个,否则报告不会达到 100%
(100 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
【问题讨论】:
如何在 SQL 中将其转换为小数?下面是等式,我得到的答案是 78(整数),但真正的答案是 78.6(带小数)所以我需要显示这个,否则报告不会达到 100%
(100 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
【问题讨论】:
试试这个:
(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
【讨论】:
convert(decimal(5,2),(100 * convert(float,[TotalVisit1])/convert(float,[TotalVisits]))) AS Visit1percent
丑陋,但它有效。
【讨论】:
CAST(ROUND([TotalVisit1]*100.0/[TotalVisits],2)as decimal(5,2)) as Percentage
不丑,工作更好更快,享受吧!
【讨论】:
至少在 MySQL 中(如果有帮助的话),如果你想使用浮点数,你必须使用浮点类型字段,而不是常规的 int 字段。
【讨论】:
只需在 100 上加一个小数
(100.0 * [TotalVisit1]/[TotalVisits]) AS Visit1percent
这会强制所有处理都在浮点数中进行...如果您希望最终输出为文本,并被截断以仅显示一位小数,请使用 Str 函数
Str( 100.0 * [TotalVisit1]/[TotalVisits], 4, 1 ) AS Visit1percent
【讨论】:
这对我来说非常适合:
CAST((1.0 * SUM(ColumnA) /COUNT(ColumnB)) as decimal(5,2))
希望它可以帮助世界上的某个人。
【讨论】:
这样做可能有点矫枉过正,但您可能希望考虑将所有值转换为浮点数以确保所有阶段的准确性。
(100.0 * ( [TotalVisit1]+0.0 )/([TotalVisits]+0.0) ) as Visit1percent
注意,对于 TotalVisits == 0 的情况,您确实需要在此处输入代码,否则您将得到除以 0 的答案。
【讨论】:
SELECT(ROUND(CAST(TotalVisit1 AS DECIMAL)/TotalVisits,1)) AS 'Visit1percent'
这将返回一个小数,而 ROUND 会将其四舍五入为一位数。所以在你的情况下,你会得到 76.6。如果您不想要任何数字,请将 1 更改为 0,如果您想要两位数,请将其更改为 2。
【讨论】:
试试这个,不要round和str或Over()。我发现这是一种更简单的方法。
cast((count(TotalVisit1) * 100.0) /TotalVisits as numeric(5,3)) as [Visit1percent]
您可以根据需要更改小数位数
例如数字(5,2)或数字(5,4)
【讨论】:
这可能无法直接解决您的问题,但是当您对一组数字进行四舍五入时,除非您采取特殊预防措施,否则您永远无法保证得到的数字加起来为 100。例如,四舍五入 33.33333、33.33333 和 33.33333 会使总和少一个,因此合乎逻辑的做法是修改集合中最大值的百分比以考虑任何差异。
这是在 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
【讨论】:
在 ms Access 中可以使用 SQL 函数 ROUND(number, number of decimals),它将数字四舍五入到给定的小数位数:
ROUND((100 * [TotalVisit1]/[TotalVisit]),1) AS Visit1percent
【讨论】: