面经,含有mysql语句面试总结

本文探讨了Spring事务的required传播行为,解释了如何在外部事务存在或不存在的情况下操作。同时,文章提到了非聚集索引的困惑,指出不同资料可能存在不一致的解释。还分享了MySQL窗口函数在面试中的应用,如用于解决查询每科最高分的问题,并通过实例展示了如何使用窗口函数查询高于平均分的学生。最后,作者回顾了一次面试经历,总结了SQL面试的常见问题和技巧,如分组、聚集函数的使用。
摘要由CSDN通过智能技术生成

spring事务传播
required ,外部没有事务开启新事务,外部有事务就加入,属于同一个事务,一个回滚全部回滚。

非聚集索引:搜答案老是看到很多版本就很烦。
比如网上的跟高性能mysql不一样。

mysql窗口函数面试题
面试完美世界sql失利,故做总结。
一般简单的就记住,select from where group by having order by desc limit 0,1
但是面试肯定问分组,聚集函数,每一科的最高分。
每科最高分
这里的考点是分组后的查询只能够查分组字段和聚集函数的字段(这里其他信息都被消除了,不管是行还是列),我们要首先找到按哪一列分组,这里肯定是科目,然后max(分数),最后连接查询。
分组是相当于返回一行代表一组,所以select里面只能有分组字段和聚集函数字段。并且没法获取每一组前n个。

面试问每一科目前n名或者第n名就要用到窗口函数,这个函数一般放到select,并且select是最后执行,所以要用子查询进行二次查询。
select * from(select *,rank() over(partition by 科目 order by 分数 desc ) as rank from score)as a where a.rank<=n;

select * from (select *, avg(成绩) over (partition by 科目) as avg_score
from 成绩表) as b where 成绩 › avg_score;
这个是算分组后的平均值,聚集函数做窗口函数,可以得到每一科目高于平均分的学生。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值