有时候我们的前台页面需要展示百分比数据;例如 生产率:98.99% ,这样一个数据后台拼接到前台 就变成一个字符串排序
那么百分比字符串排序就会如下一个问题:会按第一列排序;导致一个错误的排序。
如何解决这个问题啦?
数字字符串排序可以按一下操作进行;
方法一:ORDER BY '123'+0;(首推)
方法二:ORDER BY '123'*1;
方法三:ORDER BY CAST('123' AS SIGNED);
方法四:ORDER BY CONVERT('123',SIGNED);
但是我们这里显示的是百分比数字字符串,这样就没有办法用这几种办法排序了;
我又想了一种办法就是:单独再计算出一列,这一列专门用来排序;而返回拼接好的百分比数字字符串给前台显示;
例如:
SELECT
CASE
WHEN SUM(VOICE_MTCCON_COUNT) = 0 THEN
'——'
ELSE
CONCAT(
FORMAT(
SUM(VOICE_MTCCONSUC_COUNT) / SUM(VOICE_MTCCON_COUNT) * 100,
2
),
'%'
)
END AS RATE,SUM(VOICE_MTCCONSUC_COUNT) / SUM(VOICE_MTCCON_COUNT)
AS sort
FROM
t_call s
GROUP BY
FLOOR(s.START_TIME_SECOND / 3600)
ORDER BY
sort ASC
这其中sort是排序列,rate是显示列;这样当点击按rate列排序的时候,我们后台实际是按照sort列排序的;这样就可以解决这个问题了;
这个率最大是1,最小是0;可以完美的解决百分比数字字符串的排序;