[英]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 个可能的错误原因。
Small_Bags_Percent
之后没有逗号。CAST ( ...
不应该在左括号之间有空格,所以它应该是CAST( ...
。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.