码迷,mamicode.com
首页 > 数据库 > 详细

Mysql 的bug?子查询包含group by结果各异

时间:2016-07-15 19:15:51      阅读:307      评论:0      收藏:0      [点我收藏+]

标签:

三张表,字段和数据如下,简单起见都是整形:

zzz_repair:==》维修订单表, 列依次为:订单号, 省份

技术分享 

zzz_repair_goods:==》维修商品表, 列依次为 订单号、商品名称、商品数量

技术分享

zzz_sell: ==》销售表,列依次为销售省份、销售商品、销售数量

技术分享

 

sql: =>求平均每个省的返修比率

select

--省份分组

m.province,

--返修数 / 总销售数

sum(num)/(select sum(num) from zzz_sell z where z.province=m.province) as rate

from 

--连表

(select a.*, b.num from zzz_repair a, zzz_repair_goods b where a.sn=b.sn) m

--分组求和

group by m.province

 最后的结果如下,可见对于省份2,计算结果0.5是正确的才对,为何MySQL 5.5 显示为null

MySQL 5.5

技术分享

MySQL 5.6

技术分享

 

 附上所有脚本:

drop table IF EXISTS zzz_repair;
drop table IF EXISTS zzz_repair_goods;
drop table IF EXISTS zzz_sell;

CREATE TABLE IF NOT EXISTS `zzz_repair` (
`sn` int(11) NOT NULL,
`province` int(11) NOT NULL
) ;
INSERT INTO `zzz_repair` (`sn`, `province`) VALUES
(1, 2),
(3, 3),
(5, 5),
(8, 8);


CREATE TABLE IF NOT EXISTS `zzz_repair_goods` (
`sn` int(11) NOT NULL,
`name` int(11) NOT NULL,
`num` int(11) NOT NULL
) ;

INSERT INTO `zzz_repair_goods` (`sn`, `name`, `num`) VALUES
(1, 2, 10),
(3, 4, 10),
(5, 6, 10);

CREATE TABLE IF NOT EXISTS `zzz_sell` (
`sn` int(11) NOT NULL,
`province` int(11) NOT NULL,
`num` int(11) NOT NULL
) ;
INSERT INTO `zzz_sell` (`sn`, `province`, `num`) VALUES
(1, 2, 20),
(3, 4, 20),
(5, 6, 20),
(9, 9, 20);

 

Mysql 的bug?子查询包含group by结果各异

标签:

原文地址:http://www.cnblogs.com/corlycao/p/5674180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!