【快手】各年级各科目成绩排名Top3
窗口函数面试真题
题目描述
来源:快手数据研发二面
给定一张 student_scores 表:
id: 记录IDgrade: 年级student_name: 学生姓名subject: 科目score: 成绩
请编写 SQL 查询,找出每个年级每个科目成绩排名前3的学生(使用 DENSE_RANK,并列不跳跃)。按年级、科目、排名升序排列。
期望输出列
| 列名 | 说明 |
|---|---|
| grade | 年级 |
| subject | 科目 |
| student_name | 学生姓名 |
| score | 成绩 |
| rk | 排名 |
数据样例
| idPKINTEGER | gradeTEXT | student_nameTEXT | subjectTEXT | scoreINTEGER |
|---|---|---|---|---|
| 1 | 高一 | 张三 | 数学 | 95 |
| 2 | 高一 | 李四 | 数学 | 88 |
| 3 | 高一 | 王五 | 数学 | 92 |
| 4 | 高一 | 赵六 | 数学 | 88 |
| 5 | 高一 | 钱七 | 数学 | 78 |
| 6 | 高一 | 张三 | 英语 | 85 |
| 7 | 高一 | 李四 | 英语 | 92 |
| 8 | 高一 | 王五 | 英语 | 78 |
输入数据显示 8 / 17 行
SQL 编辑器正在保存草稿...
Ctrl + Enter 运行
正在加载 SQL 编辑器...
运行你的 SQL 查询后,结果将显示在这里