繁体   English   中英

在 SQL 中显示计算结果,保留 2 位小数

[英]Display Result of Calculation in SQL in 2 decimal places

我写了一个简单的查询来查找两列的百分比,但我希望在只有两位小数的列中得到结果。 这是我写的,但我收到错误,我似乎无法修复它。

SELECT 
    Small_Bags,
    Total_Bags,
    (Small_Bags / Total_Bags) * 100 AS Small_Bags_Percent
    (Select CAST (Small_Bags_Percent AS DECIMAL (10,2)))
FROM Table_Bags
WHERE Total_Bags <>0
 
 

您不能在同一查询中使用您的列别名。 你可以这样做。

select Small_Bags
    , Total_Bags
    , (Small_Bags / Total_Bags) * 100 AS Small_Bags_Percent
    , cast(((Small_Bags / Total_Bags) * 100) as decimal(10,2))
from Table_Bags
where Total_Bags > 0

或使用子查询

select t1.Small_Bags, t1.Total_Bags, t1.Small_Bags_Percent
    , cast(t1.Small_Bags_Percent as decimal(10,2))
from 
    (select Small_Bags
        , Total_Bags
        , (Small_Bags / Total_Bags) * 100 AS Small_Bags_Percent
        , cast(((Small_Bags / Total_Bags) * 100) as decimal(10,2))
    from Table_Bags
    where Total_Bags > 0) t1

两个功能:

 SELECT ROUND(12345.678, 2), FORMAT(12345.678, 2);
+---------------------+----------------------+
| ROUND(12345.678, 2) | FORMAT(12345.678, 2) |
+---------------------+----------------------+
|            12345.68 | 12,345.68            |
+---------------------+----------------------+

请注意,其中之一还添加了“数千个分隔符”。

(此外,不需要子查询。)

如果这是 MySQL,我可以从查询中看到大约 3 个可能的错误原因。

  1. Small_Bags_Percent之后没有逗号。
  2. CAST ( ...不应该在左括号之间有空格,所以它应该是CAST( ...
  3. 选择Small_Bags_Percent的错误方法。 这样做是可能的:
SELECT 
  Small_Bags,
  Total_Bags,
  (Small_Bags / Total_Bags) * 100 AS Small_Bags_Percent,
  CAST(((SELECT Small_Bags_Percent)) AS DECIMAL (10,2))
FROM Table_Bags
WHERE Total_Bags <>0

但是,如果您没有理由拥有两个Small_Bags_Percent列,为什么不直接CAST()到第一个呢?

SELECT 
  Small_Bags,
  Total_Bags,
  CAST((Small_Bags / Total_Bags) * 100 AS DECIMAL (10,2)) AS Small_Bags_Percent
FROM Table_Bags
WHERE Total_Bags <>0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM