我试图获得百分比,它只是显示为零。我想显示两个小数位,如0.65 这是我选择的一个查询:
select count(numbers)/count(othernumbers) decimal(3,2) as"rate"
如果我使用它,它会显示为0并删除其余的
select count(numbers)/count(othernumbers) as"rate"
答案 0 :(得分:2)
还需要将“count(数字)”和“count(othernumbers)”转换为十进制。
select convert(decimal(5,2), count(numbers))
/
convert(decimal(5,2), count(othernumbers))
as"rate"
以下是一个适用于SSMS(Sql Server)的示例:
select Convert(decimal(3,2), convert(decimal(4,2), 1.0) / convert(decimal(4,2), 10.0)) as [rate]
答案 1 :(得分:2)
你必须使用这个转换值为十进制,这将给你小数直到两个地方
SELECT CONVERT( DECIMAL(10,2),
( CONVERT(DECIMAL(10,2), numbers) /
CONVERT(DECIMAL(10,2), othernumbers) ) ) AS rate
答案 2 :(得分:0)
你检查过ceil(),floor()和round()
如果你想要没有四舍五入的话
SELECT TRUNCATE(count(numbers)/count(othernumbers),2) as "rate"
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_truncate
答案 3 :(得分:0)
SELECT FORMAT(this / that, 2) as rate
与此同时,我怀疑COUNT(numbers)
是否是你想要的。这会计算列numbers
中有多少行具有非NULL值。
此外,分数通常更像x / (x+y)
- 意味着总数(x + y)的分数是x。
A"百分比"在某个地方需要100*
。 13/20是分数 0.65或百分比 65.00。
答案 4 :(得分:0)
select convert(decimal(11, 2), 102)
select convert(decimal(11, 2), 102.5)
select convert(decimal(11, 2), 102.74)
select convert(decimal(11, 2), 102.745)
结果: 102.00; 102.50; 102.74; 102.75