我有一个表,其中包含订单 ID、产品 ID 以及该订单的每种产品的数量(如下表所示)。我必须选择 order_id 以及数量超过 5 的总数量。
+----------+------------+----------+
| order_id | product_id | quantity |
+----------+------------+----------+
| 1 | 1 | 6 |
| 1 | 2 | 1 |
| 2 | 3 | 3 |
| 2 | 2 | 2 |
| 3 | 1 | 3 |
| 3 | 3 | 5 |
+----------+------------+----------+
Run Code Online (Sandbox Code Playgroud)
我尝试过的是
+----------+------------+----------+
| order_id | product_id | quantity |
+----------+------------+----------+
| 1 | 1 | 6 |
| 1 | 2 | 1 |
| 2 | 3 | 3 |
| 2 | 2 | 2 |
| 3 | 1 | 3 |
| 3 | 3 | 5 |
+----------+------------+----------+
Run Code Online (Sandbox Code Playgroud)
AFAIK 在对数量列求和之前执行了 where 子句,所以我不能在那里使用 qty,但是有没有办法在聚合后运行条件,或者有其他方法来解决它吗?
要在聚合后进行过滤,可以使用HAVING子句。
SELECT order_id,
sum(quantity) AS qty
FROM order_product
GROUP BY order_id
HAVING sum(quantity) > 5;
Run Code Online (Sandbox Code Playgroud)