开发者

MySQL Sum Problem

开发者 https://www.devze.com 2023-04-04 13:36 出处:网络
I have table a and b. a has order_id and ship_total b has order_id, item, qty, and price 开发者_JAVA百科

I have table a and b.

How do I query and get the sum of all ship_total on all orders that have a total qty under 100?

I am afraid if I do something like this, it's going to be wrong.

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

Any help would be greatly appreciated!

I've tried the answers from below and it's not adding everything together. It's giving me the shipping amount from each order.


One way:

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

Another way:

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

Try each out and see which performs best for you.


You're close. When you want to limit results that are aggregated, you need to use the HAVING clause.

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 
0

精彩评论

暂无评论...
验证码 换一张
取 消