请大神写一个较复杂的SQL select a,b,round(a-b)from tb 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 round方式也是采用的四舍五入,我需要的方式是:小于5就舍去,大于5就入,遇5不舍不入,为原值 round方式也是采用的四舍五入,我需要的方式是:小于5就舍去,大于5就入,遇5不舍不入,为原值如:A - B = 5.6,则C最终为6; 如:A - B = 5.3,测C最终为5; 如:A - B = 5.5,则C最终为5.5; select if(a-b-floor(a-b)>0.5,ceiling(a-b),a-b) from tt 运行该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列中的值为我想得到的值。非常感谢! 根据 WWWWA 提供的SQL写出了大于和小于的SQL语句,但等于的没写出来,各位帮忙看看SELECT id,IF(A-B-FLOOR(A-B)>0.5,CEILING(A-B),FLOOR(A-B)),C FROM tab 根据 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谢谢大家的回答 mysql提示 The table 'tmpxmldata' is full sql语句中存在left join和order by,如何优化 mysql全局变量的问题 Linux下安装Mysql后,用windows2000连接不上,why?急急急急急急急急急急急急急急急急急急急急急急! 请问我这个sql语句有什么问题,为什么就是有错??HELP mysql与rollback 最近我的数据被他认修改,高手们帮我看看到底怎么回事? Mysql 找不到列的问题 mysql分区效率问题 怎样根据一个属性将一张表的数据复制到另一张表,并记录当前系统时间 菜鸟求助 MySql查询首次出现在某一天的用户
小于5就舍去,大于5就入,遇5不舍不入,为原值
小于5就舍去,大于5就入,遇5不舍不入,为原值如:A - B = 5.6,则C最终为6;
如:A - B = 5.3,测C最终为5;
如:A - B = 5.5,则C最终为5.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列中的值为我想得到的值。
非常感谢!
SELECT id,IF(A-B-FLOOR(A-B)>0.5,CEILING(A-B),FLOOR(A-B)),C FROM tab
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
谢谢大家的回答