SQL题库
这个专栏记录本人的刷题思考过程,题目来源https://leetcode.cn/studyplan/sql-free-50/
(最近更新进度会有点慢,因为博主导师布置了其他重的任务)
快乐的钢镚子
慢慢学习,慢慢思考
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【SQL基础题十七】项目员工
这个题很简单只需要通过employee_id进行联表查询即可解决,具体细节不多描述,完整代码如下。我们看到示例的计算方法 可以确定要用到的计算公式为。原创 2025-06-02 14:35:27 · 191 阅读 · 0 评论 -
【SQL基础题十六】平均售价
在这里我们考虑了purchase_date为null值的情况,然后我们可以将这个子查询插入我们的主代码即可满足需求。我们看到这个示例,我们要找到每个产品在不同时期各自的售价和数量,然后平均。根据计算方法我们可以确定计算公式为。在这里使用了一个case条件语句来筛选purchase_date为null值的情况。原创 2025-06-02 14:28:43 · 341 阅读 · 0 评论 -
【SQL基础题十五】有趣的电影
我们先来看查询条件,要求返回description不等于boring且id为奇数的影片,而且最后要按照rating降序排列。这里面唯一注意的就是如何筛选出奇数的id,我们可以使用mod函数,mod(x,y)返回的是x/y的余数,所以我们可以用mod(id,2)=1来筛选出id为奇数的数据。注意我们要返回id为奇数的方法有很多,但是mod是最直接且快速的一种。原创 2025-05-28 14:06:40 · 237 阅读 · 0 评论 -
【SQL基础题十四】确认率
我们看到题目在这里需要计算两个数量,第二张表按user_id分组求得各id的confirmed数量当作分子、第二张表的总请求数量当作分母。然后需要特地注意一点就是我们有的id可能没有请求所以总请求数量为0,所以我们将使用一个条件赋值。那么难点就在于我们怎么将两个数量放置在一个查询语句中表现出来。在这里我用的比较直接就是没脑子的方法,我用了两个子查询分别将两个数量计算出来,然后给这两个子查询命名为两这张表,然后我们通过user_id进行外连接。原创 2025-05-26 23:51:20 · 867 阅读 · 0 评论 -
【SQL基础题十三】至少有五名直接下属的经理
在这里我们分步骤进行查看结果。运行结果:很明显我们需要拿出name或者id出现大于等于5次的name,我们只需要where count(name或者id) >= 5 group by name或者id。但是在这里题目出现了一个比较恶心的地方就是,表内可能会出现名字重复的经理,此时我们使用name进行分组就区分不开,所以只能使用id进行分组和统计,这样就能得到我们想要的答案。原创 2025-05-25 23:11:42 · 140 阅读 · 0 评论 -
【SQL基础题 十二】学生们参加各科测试的次数
首先说的是这个题比较有难度,需要我们在答题页面逐一试错。为什么这一步我们实现不了题目要求呢,因为我们题目要求输出id对应参加各个科目的次数,也就是说就算某学生没参加某考试,也要将其展现出来只不过次数列为0。现在我们已经有了学生参加了考试的次数,现在我们要想办法把每个学生对应所有科目的组合都表示出来,在这里我们用到交叉连接将两个表中的所有行进行组合的连接方式,结果集的行数是两个表行数的乘积(即笛卡尔积)。原创 2025-05-25 11:58:00 · 500 阅读 · 0 评论 -
【SQL基础题十一】员工奖金
我们看到这是一个双表联合查询,两表通过empid链接。在这里我们要输出的字段是name和bonus,查询条件是bonus<=1000,注意在这里看似只有一个条件但是我们知道要是有的行在bonus这的值是null时应该表示没有奖金也是满足<1000的条件的,所以这里要用or连接两个条件。综上代码如下。原创 2025-05-22 15:36:36 · 451 阅读 · 0 评论 -
【SQL基础题十】每台机器的进程平均运行时间
我们可以看到上面示例我们要计算在同一machine_id下所有process_id的平均耗时,每个process_id记录了开始时间和结束时间。首先这是在一张表中 进行计算 ,所以我们肯定要使用到自连接,另外我们要计算(activity_type = end) - (activity_type = start)的平均时间,且要保证是在同一machine_id和process_id下,所以 在这里我们可以确定我们两张表连接的规则。原创 2025-05-22 14:58:29 · 486 阅读 · 0 评论 -
【SQL基础题九】上升的温度
首先我们看到题目需要查询的字段为id,再看查询条件“比前一天温度更高的日期id”,然而在这里只给出了一个表,且需要进行自比较,所以我们需要进行自连接。然后查询条件严格限制了与前一天进行比较,且表中记录时间的字段是date日期类型,所以我们用到date_sub函数,用于从指定日期中减去一个时间间隔,函数语法是。原创 2025-05-21 19:53:37 · 388 阅读 · 0 评论 -
【SQL基础题八】进店却未进行交易的顾客
我们首先看到题目需要查询的字段customer_id和只光顾不交易的次数,在这里我们首先可以确定用到一个函数count(customer_id),既然我们统计次数了我们就要确定按照分组规则,在这里很明显是按照customer_id进行分组。第二步,我们需要在两个表之间进行操作所以在这里可以使用左外连接left join,而我们的 连接关系只能是两个表都有的visit_id,我们可以进行下面操作。原创 2025-05-20 14:11:10 · 450 阅读 · 0 评论 -
【SQL基础题七】产品销售分析
我们看到题目要求,需要查询product_name、year、price三个字段内容,这三个字段分布在两个表中,且两个表通过,product_id连接,所以在这里我们可以使用左外连接进行串联,具体代码如下。原创 2025-05-20 00:00:00 · 245 阅读 · 0 评论 -
【SQL基础题六】使用唯一标识码替换员工id
看到题目这是一个多表查询,我们需要输出表Employees中的name列和表EmployeeUNI中的unique_id列,并且要求没有唯一标识码的员工,输出name但是unique_id使用null填充,所以在这里我们要使用左外连接,我们的Employees表作为左表,这样我们可以输出左表的全部查询字段信息。原创 2025-05-15 20:54:16 · 198 阅读 · 0 评论 -
【SQL基础题五】无效的推文
我们看到题目查询条件推文内容的字符数严格大于15时则认定成无效,然后我们看到content列是varchar数据类型,所以在这里我们要用到char_length()来统计字符串长度。原创 2025-05-15 16:20:54 · 154 阅读 · 0 评论 -
【SQL基础题四】文章浏览
我们先看题目要求:1、查询浏览过自己文章的作者,即要求author_id = viewer_id,2、按照作者的id升序排列,即order by author_id asc。然后我们看到对于表的描述,表中不存在主键就意味着会出现重复行,然而我们在查询时对重复行只需要输出一行即可,所以我们要分组输出,即group by id。综上我们的代码是。原创 2025-05-14 23:49:19 · 240 阅读 · 0 评论 -
【SQL基础题三】大的国家
我们可看到题目要求,输出字段为name,population,area,所以前半部分就确认了。原创 2025-05-14 00:29:26 · 126 阅读 · 0 评论 -
【SQL基础题二】寻找用户推荐人
我们可以看到Customer表,referee_id是推荐他们的客户id,这一列包括null值,所以我们在查询时要考虑两种情况:一是referee_id不等于 1的,二是referee_id为null值的,现在我们要将满足这两个条件中的一种给提取出来。我们使用两个条件查询。因为两个条件是或者的关系,所以中间用or连接,查询语法为。原创 2025-05-12 20:52:08 · 330 阅读 · 0 评论 -
【SQL基础题一】可回收且低脂的产品
Productsproduct_id是该表的主键(具有唯一值的列)。low_fats是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品是低脂产品,'N' 表示不是低脂产品。recyclable是枚举类型,取值为以下两种 ('Y', 'N'),其中 'Y' 表示该产品可回收,而 'N' 表示不可回收。然后我们看到我们需要查询的字段是product_id,表名为Products,原创 2025-05-12 14:08:59 · 246 阅读 · 0 评论
分享