【发布时间】:2019-06-04 07:47:21
【问题描述】:
我正在使用以下查询来选择所有出现超过 3 次且带有状态 ID 的客户。该查询还计算客户状态 ID 出现的次数:
SELECT `bp_customer_id`, `status_id`, COUNT(`status_id`) FROM `bp_orders`
GROUP BY `status_id`, `bp_customer_id`
ORDER BY `bp_customer_id`
它给出以下输出:
在上表中,客户 1000 出现了 3 次。所以我只想选择那些在表格中出现 3 次或 3 次以上的客户。我们如何做到这一点?我在上面的查询中使用了COUNT() 和HAVING,但没有运气。
SELECT `bp_customer_id`, `status_id`, COUNT(`status_id`) FROM `bp_orders`
GROUP BY `status_id`, `bp_customer_id`
HAVING COUNT(`bp_customer_id`) >= 3
ORDER BY `bp_customer_id`
我哪里做错了?
【问题讨论】:
-
您的期望只是
bp_customer_id或bp_customer_id以及status_id,COUNT(`status_id`)? -
@Arulkumar、
bp_customer_id以及status_id、COUNT... 全部 -
SELECT `bp_customer_id`, `status_id`, COUNT(`status_id`) FROM `bp_orders` WHERE `bp_customer_id` IN (SELECT `bp_customer_id` FROM `bp_orders` GROUP BY `bp_customer_id` HAVING COUNT(DISTINCT `status_id`) >= 3) GROUP BY `status_id`, `bp_customer_id` ORDER BY `bp_customer_id` -
@PetSerAl 太好了!这就是我一直在寻找的。谢谢。
-
@user5307298 我已根据您的评论更新了my answer
标签: mysql