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