ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

图解面试题:找出连续出现N次的内容

2021-06-18 16:08:48  阅读:172  来源: 互联网

标签:面试题 成绩 学号 步骤 找出 score 连续 相等 图解


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


【题目】

下面是学生的成绩表(表名score,列名:学号、成绩),使用SQL查找所有至少连续出现3次的成绩。

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


例如,“成绩”这一列里84是连续出现3次的成绩。


【解题思路】

1.条件1:什么是连续出现3次?


假设“学号”是按顺序排列的(如果不是,可以增加一列,这一列是按序号顺序排列的),所以每一学号与上一学号相差1。例如下图的3个学号是连续学号,他们之间的关系是:


某一学号(0002)=下一位的学号(0003)-1

下一位学号(0003)=下下位学号(0004)-1


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

2.条件2:成绩相等

如果这3个连续学号的成绩相等,就是题目要求的“至少连续出现3次的成绩”。


3.利用“自关联“的思路

自连接(自身连接)的本质是把一张表复制出多张一模一样的表来使用。SQL语法:

select 列明 from 表名 as 别名1,表名 as 别名2;


步骤1)将成绩表(score)复制3个一样的表,分别命名为a、b、c

select *from score as a,   score as b,   score as c;

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

步骤2)我们需要找到这3个表中3个连续的学号,这个条件如下

a.学号 = b.学号-1 and b.学号 = c.学号-1


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


步骤3)还要让这3个学号连续的人“成绩相等”,这个条件如下

a.成绩 = b.成绩 and b.成绩 = c.成绩 


将步骤2和步骤3的条件合并起来就是下面SQL里的where字句:


select *from score as a,   score as b,   score as c; where a.学号 = b.学号 - 1   and b.学号 = c.学号 - 1   and a.成绩 = b.成绩   and b.成绩 = c.成绩;


步骤4)前面步骤已经将连续3人相等的成绩找出,现在用distinct去掉自连接产生的重复数。最终SQL如下:


select distinct a.成绩 as 最终答案from score as a,   score as b,   score as c; where a.学号 = b.学号 - 1   and b.学号 = c.学号 - 1   and a.成绩 = b.成绩   and b.成绩 = c.成绩;


最终结果:

watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=


【本题考点】

• 本题考察的是连续出现,会有同学忽略“连续”二字

• 考察对自关联的灵活应用

• 从题目连续3次成绩相等,判断出“成绩相等”和“学号连续”这2个条件。考察构建“连续学号成绩相等”的思维构建能力


【举一反三】

遇到类似“连续出N次的问题”可以回想本题的解答思路,如:查询至少连续3天没有出勤的员工。


推荐:如何提升你的分析技能,实现升职加薪?


watermark,size_16,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_90,type_ZmFuZ3poZW5naGVpdGk=

标签:面试题,成绩,学号,步骤,找出,score,连续,相等,图解
来源: https://blog.51cto.com/u_15241767/2923985

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有