当前位置: 首页 > news >正文

网监备案网站用discuz做的网站

网监备案网站,用discuz做的网站,logo设计生成,1w粉丝接广告多少钱面试常考的 SQL 窗口函数汇总(举例详解) SQL 窗口函数是数据分析、数据工程师岗位面试中的高频考点。掌握它们不仅能提升 SQL 编写能力,还能在面试中展示出对数据处理的深入理解。下面是面试中最常考的窗口函数,结合典型例题和详细…

面试常考的 SQL 窗口函数汇总(举例详解)

SQL 窗口函数是数据分析、数据工程师岗位面试中的高频考点。掌握它们不仅能提升 SQL 编写能力,还能在面试中展示出对数据处理的深入理解。下面是面试中最常考的窗口函数,结合典型例题和详细解析,助你轻松应对。

一、窗口函数基础语法

函数名() OVER ([PARTITION BY1,2, ...][ORDER BY1 [ASC|DESC], ...][ROWS/RANGE BETWEEN ...]
)
  • PARTITION BY:分组,类似 GROUP BY,但不合并行。
  • ORDER BY:排序,决定窗口函数计算的顺序。
  • ROWS/RANGE:定义窗口的“范围”,如当前行前后几行。

二、面试常考窗口函数及示例

1. RANK()

功能:排名,相同值并列,后续排名跳过。
例题:按成绩排名,相同分数并列,后续名次跳过。

SELECT name,score,RANK() OVER (ORDER BY score DESC) AS rank_score
FROM students;

结果示例

namescorerank_score
A1001
B1001
C903
D804

说明:A 和 B 并列第 1,C 跳过 2,直接为 3。


2. DENSE_RANK()

功能:排名,相同值并列,后续名次不跳过。
例题:按成绩排名,相同分数并列,后续名次连续。

SELECT name,score,DENSE_RANK() OVER (ORDER BY score DESC) AS dense_rank_score
FROM students;

结果示例

namescoredense_rank_score
A1001
B1001
C902
D803

说明:A 和 B 并列第 1,C 为 2,不跳过。


3. ROW_NUMBER()

功能:生成唯一行号,不考虑相同值。
例题:按成绩排序,生成唯一序号。

SELECT name,score,ROW_NUMBER() OVER (ORDER BY score DESC) AS row_num
FROM students;

结果示例

namescorerow_num
A1001
B1002
C903
D804

说明:即使分数相同,行号也唯一。


4. NTILE(n)

功能:将数据分成 n 组,每组分配一个编号。
例题:将学生按成绩分成 3 组。

SELECT name,score,NTILE(3) OVER (ORDER BY score DESC) AS ntile_group
FROM students;

结果示例

namescorentile_group
A1001
B1001
C902
D803

说明:数据被均匀分成 3 组。


5. LAG() / LEAD()

功能

  • LAG(col):获取当前行的前一行值。
  • LEAD(col):获取当前行的后一行值。
    例题:查询每个学生的前一名和后一名的成绩。
SELECT name,score,LAG(score, 1) OVER (ORDER BY score DESC) AS prev_score,LEAD(score, 1) OVER (ORDER BY score DESC) AS next_score
FROM students;

结果示例

namescoreprev_scorenext_score
A100NULL100
B10010090
C9010080
D8090NULL

说明:LAG 和 LEAD 分别获取前后行的值,用于同比、环比分析。


6. SUM() OVER()

功能:计算累计和。
例题:按成绩顺序计算累计总分。

SELECT name,score,SUM(score) OVER (ORDER BY score DESC) AS cum_sum
FROM students;

结果示例

namescorecum_sum
A100100
B100200
C90290
D80370

说明:按成绩降序计算累计和。


7. AVG() OVER()

功能:计算移动平均值。
例题:计算当前行及前一行的平均成绩。

SELECT name,score,AVG(score) OVER (ORDER BY score DESC ROWS BETWEEN 1 PRECEDING AND CURRENT ROW) AS moving_avg
FROM students;

结果示例

namescoremoving_avg
A100100
B100100
C9095
D8085

说明:窗口范围为当前行及前一行。


三、面试中常考的窗口函数题目类型

  1. 排名类:RANK、DENSE_RANK、ROW_NUMBER 的区别。
  2. 分组分桶:NTILE 分组统计。
  3. 同比环比:LAG、LEAD 获取前后行数据。
  4. 累计统计:SUM、AVG 等聚合函数与 OVER 结合。
  5. 移动窗口:ROWS/RANGE 定义窗口范围。

四、总结

函数名功能面试考点
RANK()排名,跳过后续名次与 DENSE_RANK、ROW_NUMBER 区别
DENSE_RANK()排名,不跳过后续名次同上
ROW_NUMBER()唯一行号去重、分页
NTILE(n)分组编号分桶、分群
LAG()/LEAD()前后行取值同比、环比分析
SUM()/AVG() OVER()累计/移动统计累计和、移动平均

如果你有具体的面试题或数据表结构,我可以帮你定制更详细的解答和优化建议!欢迎继续提问。


以上内容由AI生成,仅供参考和借鉴

http://www.dtcms.com/a/433360.html

相关文章:

  • 一级 爰做片免费网站广告公司有什么业务
  • 手机网站建设用乐云seo网页设计薪资多少
  • 设置网站人数ie域名
  • 重庆网站建设找重庆最佳科技什么网站百度容易收录
  • 可做设计任务的网站辽阳专业网站开发公司
  • 杭州的网站设计赚钱软件一天赚100元游戏
  • 门户网站怎么做seowordpress本地如何安装
  • 网站网页制作的公司网站建设中颜色的感染力
  • 购物网站开发含代码最好的个人网站建设
  • 网站建设合同贴花算哪一类好的界面建筑网站
  • 新网站seo外包影响网站速度因素 dns
  • 自己做名片的网站台州做网站优化哪家好
  • 如何查询网站建站时间cms 多个网站
  • wordpress连接谷歌地图网站开发好什么进行界面的优化
  • 写代码做网站wordpress数据备份
  • 商会网站建设招标方案网站做推广被禁止访问了
  • 网站邮件发送功能怎么做企业软件
  • C++---四大强转
  • 网站开发的小结科技智库青年人才计划
  • 如何做flash游戏下载网站网站开发商城
  • 炒股配资网站建设房屋设计装修公司
  • 连云港网站关键词云畅网站建设网址
  • 怎么自己制作网站大型门户网站的建设外包在本公司制作好还是
  • 永济市做网站网站加地图
  • 做网站前端代码宿迁房产网签查询系统
  • 杭州企业建设网站公司企业网站建设视频教程
  • 网站建设文库 新的开始WordPress文章提交百度
  • 专门做顶账房的网站自己没有货源怎么开网店
  • xampp的Wordpress公网长沙关键词优化新行情报价
  • 网站开发补充协议大型建设网站制作