gpt4 book ai didi

mysql - 查找拥有至少 5 个订单的客户总数(使用 JOIN、GROUP BY 和 HAVING 计数)

转载 作者:行者123 更新时间:2023-11-29 01:04:34 25 4
gpt4 key购买 nike

我可以使用带子查询的 SQL COUNT 找到至少有 5 个订单的客户总数:

SELECT COUNT(*) FROM (

SELECT c.id FROM customers as c
INNER JOIN orders as o ON c.id = o.customer_id
GROUP BY c.id
HAVING COUNT(o.id) >= 5

) as temp

不过,如果可能的话,我想知道如何使用 Rails 事件记录查询接口(interface)实现相同的目的。

我有代码:

total_count = Customer.joins("INNER JOIN orders ON customers.id = orders.customer_id").group("customers.id").having("COUNT(orders.id) >= 5").count

但这会导致客户 ID 和订单数量的 HashMap ,因为生成的 SQL 如下所示:

SELECT COUNT(*) AS count_all, customers.id AS customers_id FROM `customers` INNER JOIN orders ON customers.id = orders.customer_id GROUP BY customers.id HAVING COUNT(orders.id) >= 5

还有其他方法可以实现我使用 Rails 约定的目标吗?或者我应该只构建原始查询?

最佳答案

如果您想从客户那里获得一些其他信息,例如他们的姓名或类似信息,则需要加入。如果 count 是你想要的,只需对 orders 表做一个简单的查询:

SELECT * FROM orders
GROUP BY customer_id
HAVING COUNT(customer_id) >= 5

并对结果集中的行进行计数。

关于mysql - 查找拥有至少 5 个订单的客户总数(使用 JOIN、GROUP BY 和 HAVING 计数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8959569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com