仅当其中一列包含某个值时,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
仅可用于您希望基于聚合进行筛选的情况感谢您抽出时间回答我的问题。:)