在每个ID中查找一些相同的值

时间:2018-10-10 14:33:02

标签: sql merge duplicates tableau

我有这种数据,其中ID列标识出可能的重复项, 在此数据中,相同的ID表示它是同一位客户,我要显示的是不需要456帐户,因为该帐户涵盖在帐户123中,是否可以在SQL或Tableau上执行此操作?我想在ID组中显示所有类似456的帐户。

enter image description here

2 个答案:

答案 0 :(得分:0)

with cte as (
select min(customer_account) as account, id --This query will get the first account for each ID
from table
group by ID
 )
select customer_account, id --this will show, for each id, all the 'duplicated' customers
from table 
where customer_account not in (select account from cte)

结果应该是:

456 1
789 1

只有一个客户ID的ID将不会显示

答案 1 :(得分:0)

编写一个SQL查询,为每个ID选择最小的Customer值。将数据集重新连接到原始表,其中原始表的Customer值大于每个对应ID的最小值。这是一个SQLFiddle示例:

http://www.sqlfiddle.com/#!9/93296f/20

以下是用于重新创建问题的DDL:

DefaultInfo

这是用于显示重复的客户帐户的DML。查询3应该会给您最终结果。

CREATE TABLE Table1
(`Id` int, `Customer_Account` int, `City` varchar(9));

INSERT INTO Table1
(`Id`, `Customer_Account`, `City`)
VALUES
(1, 123, 'London'),
(1, 123, 'Paris'),
(1, 456, 'Paris'),
(1, 456, 'Mumbai'),
(1, 123, 'Mumbai'),
(1, 789, 'Singapore');