关于统计 求百分率的问题

xhunanpp 2004-06-21 12:20:56
我现在输出的表数据是如下型状:
---------------------
班 平均分 优秀率 及格率
-----------------------------
1 73.7 6.40% 85.10%
2 73.7 6.40% 85.10%
3 73.7 6.40% 85.10%


怎么在SQL中输出的数据为这种 '6.40%' 型状呢??
如 0.42 他的百分比是 42% ,能在SELECT 时倒出这种格式的吗?

我现在求得的值为:
1 班 共 52 人,
优秀的为42 人
他的优秀率为 42 除 52
SELECT 42/52 --- 这样计算结果为0 , 为什么啊, 有没有人帮我解答一下
...全文
172 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
aht1979 2004-06-21
如果用一个整型数 去除另一个整型 数,其结果是一个整数,小数部分被截断。
你可以先用convert 函数将总人数和优秀认识转换成浮点数,然后在相除,最后再四舍五入
这样会得到一个你所需要的精度的小数,将其*100然后用convert函数转换成varchar型再+'%'字符就是你所需要的结果
例,我这取3位精度值
select convert(varchar,(convert(numeric(4,2),convert(numeric(5,3),42)/52*100)))+'%'
1.convert(numeric(5,3),42)/52*100) --将优秀人数转换成浮点数后除以52然后再乘以100,得到一个数值
2.convert(numeric(4,2),convert(numeric(5,3),42)/52*100))--四舍五入,将数值保存位88.10格式,即两位整数+两位小数
3.convert(varchar,(convert(numeric(4,2),convert(numeric(5,3),42)/52*100)))+'%'
--将第二步得到的数值转换成varchar类型后加百分比符合'%',结果就是你所需要的值
  • 打赏
  • 举报
回复
zjcxc 元老 2004-06-21
42,52换成对应的字段就行了.
  • 打赏
  • 举报
回复
zjcxc 元老 2004-06-21
select cast(cast(42*100.0/52 as decimal(10,2)) as varchar)+'%'
  • 打赏
  • 举报
回复
yesyesyes 2004-06-21
整数除以整数,结果还是整数.
必须先convert或cast成real或float后再除.
  • 打赏
  • 举报
回复
chludlf 2004-06-21
42/52 =0 因為是整除
convert(float ,42)/52=0.80769230769230771

最後要把結果*100轉變為字符型.
  • 打赏
  • 举报
回复
chludlf 2004-06-21
可以用以下語句.

select test= convert(char(4),round(convert(float,42)/52,3)*100)+'%'

test
-----
80.8%

(影響 1 個資料列)

  • 打赏
  • 举报
回复
xhunanpp 2004-06-21
多谢合位,
  • 打赏
  • 举报
回复
相关推荐
发帖
MS-SQL Server

3.3w+

社区成员

MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
帖子事件
创建了帖子
2004-06-21 12:20
社区公告
暂无公告