SQL面试题与解析1-知识点考察

面试高频题1:

题目:讲一下Union和Join的区别

答案解析:

UNION是两张表进行上下拼接,产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集,分为UNION和UNION ALL两种方法;

JOIN 是两张表进行左右连接,条件匹配的记录将合并产生一个记录集,有LEFT JOIN、RIGHT JOIN、INNER JOIN、OUTER JOIN等多种方法。

面试高频题2:

题目:说一下SQL窗口函数并举例

答案解析:

1.窗口函数 窗口函数和普通聚合函数的区别: ①聚合函数是将多条记录聚合为⼀条;窗⼝函数是每条记录都会执行,有几条记录执行完还是几条。 ②聚合函数也可以⽤于窗⼝函数。 原因就在于窗⼝函数的执⾏顺序(逻辑上的)是在FROM,JOIN,WHERE, GROUP BY,HAVING之后,在ORDER BY,LIMIT,SELECT DISTINCT之前。它 执⾏时GROUP BY的聚合过程已经完成了,所以不会再产⽣数据聚合。 注:窗口函数是在where之后执行的,所以如果where子句需要用窗口函数作为条件,需要多⼀层查询,在子查询外面进行,例如: select user_id,avg(diff) from ( select user_id,lead(log_time)over(partition user_id order by log_time) - log_time as diff from user_log )t where datediff(now(),t.log_time)<=30 group by user_id 2.窗口函数的基本用法: over关键字用来指定函数执⾏的窗⼝范围,若后⾯括号中什么都不写,则意味着窗口包含满足WHERE条件的所有行,窗口函数基于所有行进行计算;如果不为空,则⽀持以下4中语法来设置窗⼝。 ①window_name:给窗口指定⼀个别名。如果SQL中涉及的窗口较多,采用别名可以看起来更清晰易读 ②partition by子句:窗口按照哪些字段进⾏分组,窗⼝函数在不同的分组上分别执⾏ ③order by子句:按照哪些字段进⾏排序,窗⼝函数将按照排序后的记录顺序进⾏编号 ④frame子句:frame是当前分区的⼀个子集,子句⽤来定义子集的规则,通常⽤来作为滑动窗⼝使⽤ 3.(⾯试考点)序号函数:row_number(),rank(),dense_rank()的区别 ROW_NUMBER():顺序排序——1、2、3 RANK():并列排序,跳过重复序号——1、1、3 DENSE_RANK():并列排序,不跳过重复序号——1、1、2 4.分布函数:percent_rank(),cume_dist() percent_rank(): 每⾏按照公式 (rank-1) / (rows-1) 进⾏计算。其中,rank为RANK()函数产⽣的序号,rows 为当前窗⼝的记录总⾏数 --给窗口指定别名:WINDOW w AS(PARTITION BY stu_id ORDER BY score) rows =5 mysql> SELECT -> RANK() OVER w AS rk, -> PERCENT_RANK()OVER w AS prk, -> stu_id,lesson_id,score -> FROM t_score -> WHERE stu_id=1 -> WINDOW w AS (PARTITION BY stu_id ORDER BY score) -> ; +----+-----+--------+-----------+-------+ | rk | prk | stu_id | lesson-id | score | +----+-----+--------+-----------+-------+ | 1 | 0 | 1 | L003 | 79 | | 2 | 0.25| 1 | L002 | 86 | | 3 | 0.5| 1 | L004 | 88 | | 4 | 0.75| 1 | L005 | 98 | | 5 | 0.75| 1 | L001 | 98 | +----+-----+--------+-----------+-------+ cume_dist(): 分组内⼩于、等于当前rank值的⾏数/分组内总⾏数 eg:查询⼩于等于当前成绩(score)的⽐例 --cd1: 没有区分,则所有数据均为一组,总行数为8 --cd2: 按照lesson_id分成了两组,行数各为4 mysql> SELECT stu_id,lesson_id,score -> CUME_DIST() OVER (ORDER BY score) AS cd1, -> CUME_DIST() OVER (PARTITION BY lesson_id ORDER BY score) AS cd2 -> FROM t_score -> WHERE lesson_id IN('L001','L002') -> ; +--------+-----------+-------+-------+------+ | stu_id | lesson_id | score |

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2022年最新整理:数据分析师高频考点与解析,包含top11面试考点和177道高频面试题与解析

全部评论
sql窗口函数xiedegolande
1 回复 分享
发布于 2025-10-16 21:57 广东
1. distinct 直接去重 2. groupby 对去重字段分组 3. 排序窗口函数 加条件where rnk=1;
点赞 回复 分享
发布于 2023-03-03 12:43 北京

相关推荐

1、自我介绍2、Agent项目是实习项目还是个人项目?有没有上线?3、拷打实习(10min)4、大模型微调,你的训练数据集是如何构建的?数据量有多大?5、在构建数据集的过程中,遇到了哪些挑战?花了多长时间?6、你之前的实习经历偏后端工程,你未来的职业规划更倾向于纯后端开发,还是希望从事与AI/大模型结合的工作?7、详细讲一下Golang中Channel的概念和作用,它是否是并发安全的?8、Channel和传统的锁(Mutex)在实现并发控制时有什么区别?各自的适用场景是什么?9、讲一下GMP模型10、当P的本地队列为空或者不为空时,它会怎么去调度G(协程)?11、Redis支持哪些数据结构12、为什么Redis的速度这么快13、如何实现一个类似淘宝搜索框的实时商品名称模糊搜索功能?14、实时输入联想与输入完成后点击搜索在技术实现上有什么本质区别?15、实时搜索通常使用什么网络协议(如WebSocket)?你了解或有使用过吗?讲一下16、请详细说明微信扫码登录的完整流程和背后发生的原理17、在微服务架构中,服务发现和负载均衡是如何实现的?18、服务注册中心(如Nacos,&nbsp;Consul)是如何工作的?服务实例如何注册和保活(如通过心跳机制)?19、讲一下Agent中的“长短期记忆”20、什么样的信息应该放在长期记忆,什么样的信息放在短期记忆?21、当对话轮数很多,上下文窗口不足时,有哪些处理策略?(如截断、压缩)22、如果要进行记忆压缩,通常有哪些方法?23、了解过Agent的设计范式吗?有哪些?24、你设计的Agent是怎么实现ReAct模式的?详细讲讲25、手撕:实现一个并发任务处理器:给定一个包含100个任务ID的列表,要求控制最大并发数为3,模拟并发调用某个外部接口(如打印ID)26、反问
三本咋了:很好的面筋
查看24道真题和解析
点赞 评论 收藏
分享
评论
5
35
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务