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

仅当其中一列包含某个值时,MySQL求和,mysql,sql,mariadb,Mysql,Sql,Mariadb,只有当其中一列具有特定值时,才有方法对行求和吗?我有这张桌子: | order_id | total | is_tip | ----------------------------- | 1 | 12 | 1 | | 1 | 3 | 0 | | 2 | 28 | 0 | | 2 | 15 | 0 | | 3 | 39 | 1 | | 3

只有当其中一列具有特定值时,才有方法对行求和吗?我有这张桌子:

| 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;

但这一质疑是错误的。我只是个初学者。提前谢谢。

使用
having
子句:

SELECT order_id, SUM(total)
FROM orders
GROUP BY order_id
HAVING SUM(is_tip) >= 1;
您的查询还需要一个
分组依据
。我假设你想和至少一个“小费”吵架。您还可以将
HAVING
子句表述为:

HAVING MAX(is_tip) > 0

请使用下面的查询

SELECT order_id, SUM(total) FROM orders where is_tip >= 1 group by order_id;

Having
仅可用于您希望基于聚合进行筛选的情况

感谢您抽出时间回答我的问题。:)