执行简单的col1 / col2计算,然后使用CONCAT
添加文字%
符号后,我无法按顺序对它们进行成功排序。
最初我的结果排序DESC
就像
9%
8%
75%
65%
100%
更新后:
CASE WHEN ROUND(col1/col2 *100) = 100
THEN CONCAT(100, '%')
ELSE LPAD(CONCAT(ROUND(col1/col2 *100),'%'),3,'0')
END AS Percent
我能够通过在单个数字前面添加0来成功地对单个和双位数列进行排序,但是我留下了100个不合适的位置
75%
65%
09%
08%
100%
思想?
答案 0 :(得分:2)
似乎您已经在值中添加了%
符号,因此您可以在没有%
符号的情况下检索这些符号,然后对其进行排序并添加回%
符号。下面是工作和测试的SQL示例。
select concat(percentage, '%') -- add '%' sign
from (
select SUBSTRING_INDEX(percentage, '%', 1) percentage -- remove `%`
from percentage_sorting) t
order by percentage; -- order by values
答案 1 :(得分:0)
将百分比转换为字符串后,您基本上会按字母顺序排列,这通常不是您想要的数字:
20%
2%
12%
1%
如果要进行数字排序,则必须对实际数字进行排序:
SELECT CONCAT(percentage, '%')
FROM data
ORDER BY percentage DESC