首页 > 解决方案 > 在多列上分组的单个列的计数

问题描述

我有两列 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;

希望我清楚。

标签: mysqlsql

解决方案


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

推荐阅读