点击上方【蓝色】字体 关注我们

01 场景描述
02 数据准备
CREATE TEMPORARY TABLE ages (tens INT, -- 十位数字ones INT -- 个位数字);INSERT INTO ages VALUES(3, 5),(3, 6),(3, 8),(4, 2),(4, 5),(4, 6),(5, 1),(5, 5),(5, 7),(6, 1),(6, 2);

03 问题分析
-- 第一步筛选,找出个位数字不唯一对应的十位数,排除3和4开头的SELECT DISTINCT tens, onesFROM agesWHERE tens NOT IN (SELECT tensFROM (SELECT tens, COUNT(DISTINCT ones) AS unique_countFROM agesGROUP BY tens) AS subqueryWHERE unique_count = 1);
-- 第二步筛选,在第一步结果基础上,排除个位数字重复的情况SELECT DISTINCT tens, onesFROM (SELECT *,COUNT(*) OVER (PARTITION BY ones) AS count_per_onesFROM (SELECT DISTINCT tens, onesFROM agesWHERE tens NOT IN (SELECT tensFROM (SELECT tens, COUNT(DISTINCT ones) AS unique_countFROM agesGROUP BY tens) AS subqueryWHERE unique_count = 1)) AS subquery_1) AS subquery_2WHERE count_per_ones = 1;
tens ones5 76 2
-- 第三步筛选,在第二步结果基础上,排除十位数重复的情况SELECT tens, onesFROM (SELECT *,COUNT(*) OVER (PARTITION BY tens) AS count_per_tensFROM (SELECT DISTINCT tens, onesFROM (SELECT *,COUNT(*) OVER (PARTITION BY ones) AS count_per_onesFROM (SELECT DISTINCT tens, onesFROM agesWHERE tens NOT IN (SELECT tensFROM (SELECT tens, COUNT(DISTINCT ones) AS unique_countFROM agesGROUP BY tens) AS subqueryWHERE unique_count = 1)) AS subquery_1) AS subquery_2WHERE count_per_ones = 1) AS subquery_3) AS subquery_4WHERE count_per_tens = 1;
tens ones6 2
04 小 结
会飞的一十六
微信号:ddan_hashcode
扫描右侧二维码关注我们
点个【在看】 你最好看

文章转载自会飞的一十六,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。






