如何按州计算订单

How to Count Orders by State

我有一个包含三个 tables、RMA、订单和客户的数据库,我正在尝试按州(在客户的 table).尽管查询一直只返回一条记录(只计算 UTAH)。

您的查询缺少按 state 聚合记录的 group by 子句。在除MySQL以外的所有其他数据库中,您会得到语法错误...但是不幸的是MySQL是lax的(当禁用了选项ONLY_FULL_GROUP_BY时),这会导致这种错误更难发现。

select count(*) as total_returns, c.state
from customers c
inner join orders o on c.customerID = o.customerID
inner join rma r    on o.orderID = r.orderID
group by c.state   --> here

请注意,我使用 table 别名来缩短查询,并将计数更改为简单的 count(*) (这在查询中是等效的,并且对于数据库而言效率更高)。

如果你想显示没有returns的状态,那么你可以使用left join代替:

select count(r.orderID) as total_returns, c.state
from customers c
left join orders o on c.customerID = o.customerID
left join rma r    on o.orderID = r.orderID
group by c.state   --> here