mysql 如何在聚合列上指定条件?

TN_*_*USL 2 mysql

我有一个表,其中包含订单 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,但是有没有办法在聚合后运行条件,或者有其他方法来解决它吗?

sti*_*bit 8

要在聚合后进行过滤,可以使用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)