我有表a和b。
如何在总数量低于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
非常感谢任何帮助!
我尝试过以下的答案,并没有把所有东西都加在一起。它给了我每个订单的运费。
答案 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