您当前的位置: 首页 >  sql

qq_34412985

暂无认证

  • 0浏览

    0关注

    1061博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

mysql sum join 多表统计求和时不正确的问题

qq_34412985 发布时间:2018-12-05 19:16:03 ,浏览量:0

但是我们发现,这个数据是错误的

于是我想到了用 distinct  但是发现用不了

于是又想到 group by

出来的结果是下面这样的

发现统计只是分组统计,没达到所有行统计,而且统计的数据不正确

于是我写了下面的语句来查看结果,加多了一个count函数查看

    SELECT s.oid,p.oid  AS poid,  SUM( priceCount) AS count_price, COUNT(p.oid) FROM mobile_shops_orders AS s     LEFT JOIN mobile_shops_products AS p ON p.oid = s.oid     WHERE s.userid =  '2'     GROUP BY poid

 

出来的结果是下面的,一看就知道是什么原因了   oid     poid     count_price     COUNT(p.oid) 2015031809153611521     2015031809153611521     664.00     2 2015031809155386138     2015031809155386138     40.00     1

 

最后我们的语句应该是下面这个的,join 后面这个是重点,意思是返回不重复的数据

SELECT s.oid, p.oid AS poid, SUM(priceCount) AS count_price

FROM mobile_shops_orders AS s

LEFT JOIN  (select distinct  oid from  mobile_shops_products)   AS  p ON p.oid = s.oid WHERE s.userid =  '2’

oid     poid     count_price 2015031809153611521     2015031809153611521     372.00

这里有几个要注意的问题,一是,group by 是用于分组统计,如果要所有行统计不能用他

二需要使用子句先排除重复行,否则也会出得统计不正确的问题

还有,看网上说 返回 null 时sum等统计函数是不正确的

关注
打赏
1653291990
查看更多评论
立即登录/注册

微信扫码登录

0.0479s