当前位置:   article > 正文

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

mysql in子查询有group by

标签:

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

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

20180110201714502733.png

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

20180110201714515429.png

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

20180110201714528125.png

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

20180110201714536914.png

MySQL 5.6

20180110201714545703.png

附上所有脚本:

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);

标签:

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/959620
推荐阅读
相关标签
  

闽ICP备14008679号