select  a,b,round(a-b)
from tb

解决方案 »

  1.   

    round方式也是采用的四舍五入,我需要的方式是:

    小于5就舍去,大于5就入,遇5不舍不入,为原值
      

  2.   

    round方式也是采用的四舍五入,我需要的方式是:
    小于5就舍去,大于5就入,遇5不舍不入,为原值如:A - B = 5.6,则C最终为6;
     如:A - B = 5.3,测C最终为5;
     如:A - B = 5.5,则C最终为5.5; 
      

  3.   

    select if(a-b-floor(a-b)>0.5,ceiling(a-b),a-b) from tt
      

  4.   

    运行该SQL结果:如是>=0.5则进位,如是<0.5则值不变。
    另送上测试表:DROP TABLE IF EXISTS `tab`;
    CREATE TABLE `tab` (
      `id` bigint(20) NOT NULL,
      `A` double DEFAULT NULL,
      `B` double DEFAULT NULL,
      `C` double DEFAULT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ----------------------------
    -- Records of tab
    -- ----------------------------
    INSERT INTO `tab` VALUES ('1', '8.88', '3.3', '6');
    INSERT INTO `tab` VALUES ('2', '8.8', '3.5', '5');
    INSERT INTO `tab` VALUES ('3', '8.8', '3.3', '5.5');
    其中C列中的值为我想得到的值。
    非常感谢!
      

  5.   

    根据 WWWWA 提供的SQL写出了大于和小于的SQL语句,但等于的没写出来,各位帮忙看看
    SELECT id,IF(A-B-FLOOR(A-B)>0.5,CEILING(A-B),FLOOR(A-B)),C FROM tab
      

  6.   

    根据 WWWWA 提供的SQL改进已解决
    SELECT id,IF(ROUND(A-B-FLOOR(A-B),1)=0.5,ROUND(A-B,1),IF(A-B-FLOOR(A-B)>0.5,CEILING(A-B),FLOOR(A-B))) AS C1,C FROM tab
    谢谢大家的回答