如何从表中选择行,其中连接表中的行总和大于某个数字?

问题描述 投票:0回答:1

我有一个

order
表和一个
payment
表,其中将多个付款连接到一个订单。

下单

id 名字
1 订单1
2 订单2

付款

id 订单_id 金额
1 1 2000
2 1 3000
3 2 500
4 2 100

我想要

SELECT
付款
SUM
大于或小于特定
amount
的所有订单。我怎样才能做到这一点?

我想我需要

JOIN
表格,但我不确定如何
SUM
amount
表格中的
payment
。我试过这个:

SELECT * FROM "order"
JOIN payment ON payment.order_id = payment.id
WHERE (SELECT SUM(amount) FROM payment) > 2000

这不会导致任何错误,但我认为结果不正确。我期望只返回“订单 1”。我需要以某种方式使用

GROUP BY
HAVING
吗?

sql postgresql sum
1个回答
0
投票

使用子查询:

SELECT * FROM "order"
JOIN payment ON payment.order_id = payment.id
WHERE "order".id in (
  SELECT order_id
  FROM payment
  GROUP BY 1
  HAVING SUM(amount) > 2000
)
© www.soinside.com 2019 - 2024. All rights reserved.