如何在sql而不是0中显示小数

时间:2015-04-16 14:12:13

标签: mysql sql decimal

我试图获得百分比,它只是显示为零。我想显示两个小数位,如0.65 这是我选择的一个查询:

select count(numbers)/count(othernumbers) decimal(3,2) as"rate"

如果我使用它,它会显示为0并删除其余的

select count(numbers)/count(othernumbers) as"rate"

5 个答案:

答案 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