Sql 按降序排列时,读数增加/减少的百分比为9%和90%
我创建了一个名为“百分比”的新列,用于计算预期付款和实际付款之间的百分比增长。这个计算似乎是正确的,但当我按降序排列时,9%正好低于90%,而9%应该在列表的底部 除此之外,我想删除每个数字末尾的附加.00 当前代码:Sql 按降序排列时,读数增加/减少的百分比为9%和90%,sql,Sql,我创建了一个名为“百分比”的新列,用于计算预期付款和实际付款之间的百分比增长。这个计算似乎是正确的,但当我按降序排列时,9%正好低于90%,而9%应该在列表的底部 除此之外,我想删除每个数字末尾的附加.00 当前代码: SELECT [ExpectedPayment] ,[TotalActualPayment] ,CONCAT(ROUND(((TotalActualPayment-ExpectedPayment)/(ExpectedPayment)*100), 0),
SELECT [ExpectedPayment]
,[TotalActualPayment]
,CONCAT(ROUND(((TotalActualPayment-ExpectedPayment)/(ExpectedPayment)*100), 0), '%') 'Percentage'
FROM DATABASE
ORDER BY PERCENTAGE DESC;
电流输出:
预期付款
实际支付总额
百分比
23924.8962
46096.44
93.00%
24083.0961
46355.47
92.00%
18937.6445
36100.58
91.00%
18377.3185
20123.11
9.00%
17537.915
19174.82
9.00%
24083.0961
45515.82
89.00%
26064.4709
49300.18
89.00%
您是按字符串而不是数字排序的 我建议仅按基本计算进行订购:
order by (TotalActualPayment-ExpectedPayment)/(ExpectedPayment) desc
我建议按照戈登的建议订购。通过将.000转换为type
int
SELECT [ExpectedPayment]
,[TotalActualPayment]
,CONCAT(cast(ROUND(((TotalActualPayment-ExpectedPayment)/(ExpectedPayment)*100), 0) as int), '%') 'Percentage'
FROM DATABASE
order by (TotalActualPayment-ExpectedPayment)/(ExpectedPayment) desc
如果您同意截断表达式的结果,则可以完全删除round语句。您的代码不会在MySQL中运行,因此MySQL标记令人困惑。请注意,已删除标记。那么您使用的是哪种dbms?谢谢!!这似乎奏效了。如何通过删除每个数字末尾的额外.000来改进它?@Meowzz。对于正在使用的任何数据库,都可以使用适当的格式化方法格式化该值。