mysql - 在多列上分组的单个列的计数
问题描述
我有两列 account_number 和 customer_id。一个客户可以有多个账户,但一个账户不能有多个客户。
我已经通过命令将包含 account_num 及其对应的 customer_id 的文件转储到 dbLOAD DATA INFILE
中。现在我正在尝试通过查询验证在文件中多次出现的任何帐户是否在两个不同的行中具有相同的 customer_id 或不同的 customer_id。
要求:我想退回那些已经来过多次但有不同客户 ID 的账户
我尝试使用 group by ,但没有得到想要的结果。这是我的查询,没有给出想要的结果
SELECT ACCOUNT_NUM,UNIQUE_CUSTOMER_ID,COUNT(UNIQUE_CUSTOMER_ID)
FROM LINKAGE_FILE
GROUP BY ACCOUNT_NUM, UNIQUE_CUSTOMER_ID
HAVING COUNT(ACCOUNT_NUM) > 1 AND COUNT(UNIQUE_CUSTOMER_ID) = 1;
希望我清楚。
解决方案
COUNT(DISTINCT..)
您可以简单地使用for each 获取唯一客户 ID 的计数,并在子句account_num
内过滤掉 count 大于 1 的情况:HAVING
SELECT
ACCOUNT_NUM,
COUNT(DISTINCT CUSTOMER_ID) AS unique_customer_count
FROM LINKAGE_FILE
GROUP BY ACCOUNT_NUM
HAVING unique_customer_count > 1
推荐阅读
- azure - 让 Azure AD SSO 使用两个不同的 URL
- python - 如何将此函数简化为检查列表中所有错误代码的函数?
- r - R-分组和计数?
- android - 如何为 MapBox 设置多个过滤器?
- javascript - 无法理解为什么它给了我:未捕获(承诺)类型错误:无法读取未定义的属性“blabla”
- ruby-on-rails - 使用 Rails API 创建和发送电子邮件附件的最佳实践是什么
- python - Shutil.move 不移动文件夹,而是移动文件夹的内容
- python - 使用字符串和 NaN 提取多索引 pandas 数据帧的最大值
- python - 如何使用 tf.data.Dataset.map 对两个 tf.data.Datasets 进行元素总和,两者都无限迭代?
- android - Room database with Kotlin inline class as an Entity field