大家好,我是老吴,大家也可以叫我吴同学,再小一点的朋友也可以叫我吴师兄。欢迎大家跟我一起走进数据分析的世界,一起学习!
感兴趣的朋友可以关注我的数据分析专栏,里面有许多优质的文章跟大家分享哦。
另外也欢迎大家关注我的SQL刷题专栏,里面有我分享的高质量SQL题,以及详细的解析。
目录
- 问题描述
- 解题思路
- 代码实现
- 结束语
本篇博文又是我的SQL题分享环节,为了记录一下自己的做题过程,以及防止后续力扣会员过期无法再次查看题目,所以我每天都会给大家选出一道质量较高的SQL题目发表到博客上,希望在记录的同时,对大家也能有所帮助。
那么今天给大家分享的题是LeetCode的第1613题——找到遗失的ID。
下面是问题的详细描述。
问题描述表 Customer
+---------------+---------+ | Column Name | Type | +---------------+---------+ | customer_id | int | | customer_name | varchar | +---------------+---------+
customer_id 是该表主键。
该表第一行包含了顾客的名字和id。
写一个 SQL 语句, 找到所有遗失的顾客id. 遗失的顾客id是指那些不在 Customers 表中, 值却处于 1 和表中最大 customer_id 之间的id.
注意: 最大的 customer_id 值不会超过 100.
返回结果按 ids 升序排列
查询结果格式如下例所示:.
Customers 表: +-------------+---------------+ | customer_id | customer_name | +-------------+---------------+ | 1 | Alice | | 4 | Bob | | 5 | Charlie | +-------------+---------------+ Result 表: +-----+ | ids | +-----+ | 2 | | 3 | +-----+ 表中最大的customer_id是5, 所以在范围[1,5]内, ID2和3从表中遗失.解题思路
- 先找到最大值,然后生成对应数量的字段
- 如最大值为5,则生成五行数据,数值从1到5
- 之后判断哪些值不在customers表中(这里不用not in,用left join,这样子在hive中也能执行)
- 所以关键在于如何创建临时表
with tmp t as (select 1 as n union all select n+1 from t where n<(select max(customer_id) from customers) ) select t.n as ids from t left join Customers c on t.n=c.customer_id where c.customer_id is null结束语
看完这篇,还有更多知识点分享给你哦,自己慢慢找哈,就在下面链接。
推荐关注的专栏
机器学习:分享机器学习实战项目和常用模型讲解
数据分析:分享数据分析实战项目和常用技能整理
往期内容回顾
学习Python全套代码【超详细】Python入门、核心语法、数据结构、Python进阶【致那个想学好Python的你】
❤️ 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序
学习pandas全套代码【超详细】分箱 *** 作、分组聚合、时间序列、数据可视化
学习NumPy全套代码【超详细】基本 *** 作、数据类型、数组运算、复制和试图、索引、切片和迭代、形状 *** 作、通用函数、线性代数
关注我,了解更多相关知识!
CSDN@报告,今天也有好好学习
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)