仅当其中一列包含某个值时mysql求和

ukqbszuj  于 2021-07-29  发布在  Java
关注(0)|答案(2)|浏览(290)

有没有办法只在其中一列有某个值的情况下对行求和?我有这张table:

| order_id | total | is_tip |
-----------------------------
|     1    |  12   |    1   |
|     1    |   3   |    0   |
|     2    |  28   |    0   |
|     2    |  15   |    0   |
|     3    |  39   |    1   |
|     3    |   8   |    1   |

预期结果是:

| order_id | SUM(total) |
-------------------------
|     1    |     15     |
|     3    |     47     |

只有当其中一列等于1时,才会求和。所以订单ID 1和3是合格的。到目前为止,我尝试使用以下查询:

SELECT order_id, SUM(total) FROM orders HAVING COUNT(is_tip) >= 1;

但这个问题是错误的。我只是个初学者。先谢谢你。

iszxjhcz

iszxjhcz1#

使用 having 条款:

SELECT order_id, SUM(total)
FROM orders
GROUP BY order_id
HAVING SUM(is_tip) >= 1;

您的查询还需要 GROUP BY . 我假设你想和至少一个“小费”吵架。你也可以说 HAVING 条款如下:

HAVING MAX(is_tip) > 0
jm81lzqq

jm81lzqq2#

请使用下面的查询,

SELECT order_id, SUM(total) FROM orders where is_tip >= 1 group by order_id;
``` `Having` 只能在要基于聚合进行筛选的情况下使用

相关问题