我正在尝试计算每个客户下订单的数量以及上次订单的日期。我目前的疑问是:
select customerID, count(*) as totalOrders, (
select orderDate
from orders
where customerID=o.customerID
order by orderDate desc
limit 1
) lastOrder
from orders o
group by customerID
这有效,但我不确定子查询是否是运行查询的最有效方式。
有更好的方法吗?
答案 0 :(得分:3)
“子查询”可以解决的问题也可以通过“加入”来完成,但这取决于可能更高效的特定情况。
在您的特定情况下,您不需要执行子查询,因为您可以使用MAX
函数直接获取分组客户的最后日期。
SELECT customerID, COUNT(*) AS totalOrders, MAX(orderDate) AS lastOrder
FROM orders
GROUP BY customerID