MySQL总和问题

时间:2011-09-12 17:22:56

标签: mysql sql sum

我有表a和b。

  • a有order_id和ship_total
  • b有order_id,item,qty和price

如何在总数量低于100的所有订单上查询并获取所有ship_total的总和?

我担心如果我这样做,那就错了。

select SUM(ship_total) FROM a as a inner join b as b on a.order_id=b.order_id WHERE SUM(qty) < 100 GROUP BY a.order_id

非常感谢任何帮助!

我尝试过以下的答案,并没有把所有东西都加在一起。它给了我每个订单的运费。

2 个答案:

答案 0 :(得分:3)

一种方式:

SELECT
    SUM(A.ship_total)
FROM
    (SELECT B.order_id FROM B GROUP BY B.order_id HAVING SUM(qty) < 100) SQ
INNER JOIN A ON
    A.order_id = SQ.order_id

另一种方式:

SELECT
    SUM(A.ship_total)
FROM
    A
WHERE
    order_id IN (
        SELECT order_id
        FROM B
        GROUP BY order_id
        HAVING SUM(qty) < 100)

尝试各自,看看哪种方式最适合你。

答案 1 :(得分:0)

你很亲密。如果要限制聚合的结果,则需要使用HAVING子句。

select SUM(ship_total) 
FROM a as a 
inner join b as b 
  on a.order_id=b.order_id 
GROUP BY a.order_id
having SUM(qty) < 100