mysql - 我如何计算 customer_id,其中 store_id 计数超过 1

标签 mysql sql select

我有一个像 down 这样的数据库:

+---+-------------+----------
|id | customer_id | store_id|
+---+-------------+----------
|1  | 1           | 1001|
|2  | 1           | 1002|
|3  | 1           | 1001|
|4  | 1           | 1003|
|5  | 2           | 1001|
|6  | 2           | 1001|
|7  | 3           | 1001|
|8  | 3           | 1002|
|9  | 3           | 1001|
|10 | 4           | 1003|
|11 | 4           | 1001|
|12 | 4           | 1002|
+---+-------------+----------

我希望计算不同的customer_id,其中购物的不同shop_id大于值1。(例如customer_id 1购物1001、1002和customer_id 4购物1001、1002、1003和customer_id 3购物1001,1002,但customer_id 2仅购物1001)

最佳答案

您可以使用嵌套查询 - 内部查询仅过滤具有多个商店 ID 的客户 ID,外部查询对它们进行计数:

SELECT COUNT(*)
FROM   (SELECT   customer_id
        FROM     my_table
        GROUP BY customer_id
        HAVING   COUNT(DISTINCT store_id) > 1) t

请注意 group by内部查询中已经返回不同的客户 ID,因此外部查询不需要 distinct在其 count打电话。

关于mysql - 我如何计算 customer_id,其中 store_id 计数超过 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37503225/

相关文章:

c++ - 在 SQLite 中检索所有项目的最快方法是什么?

php - 国家、州和城市名称显示第一个表中的正确名称,但也显示第二个表中的相同详细信息

mysql - 使用 Vagrant 和 Chef Solo 安装 mysql cookbook

sql - 不同的房型

php - 如果表中存在变量,如何使用 SQL 检查

javascript - javascript。选择图像的一部分

MySQL:间隔问题

mysql - 出于专利研究目的进行复杂的 SQL 查询时陷入困境

php - mysql 如何根据另一个表的结果从一个表中获取内容

php - MySQL将select与其他表的sum结合起来