mysql 百分比 字符串 拼接后的排序

有时候我们的前台页面需要展示百分比数据;例如 生产率: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;可以完美的解决百分比数字字符串的排序;

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coding-贝贝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值