首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >HiveSQL-面试题034 不及格课程数大于2的学生的平均成绩及其排名

HiveSQL-面试题034 不及格课程数大于2的学生的平均成绩及其排名

作者头像
数据仓库晨曦
发布于 2024-01-08 07:47:55
发布于 2024-01-08 07:47:55
30300
代码可运行
举报
文章被收录于专栏:数据仓库技术数据仓库技术
运行总次数:0
代码可运行

一、题目

有学生每科科目成绩,求不及格课程数大于2的学生的平均成绩及其成绩平均值后所在的排名。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
+------+------+--------+
| sid  | cid  | score  |
+------+------+--------+
| 1    | 1    | 90     |
| 1    | 2    | 50     |
| 1    | 3    | 72     |
| 2    | 1    | 40     |
| 2    | 2    | 50     |
| 2    | 3    | 22     |
| 3    | 1    | 30     |
| 3    | 2    | 50     |
| 3    | 3    | 52     |
| 4    | 1    | 90     |
| 4    | 2    | 90     |
| 4    | 3    | 72     |
+------+------+--------+

二、分析

1.本题比较简单,考查的是聚合函数、条件函数和排序开窗函数,重点在考察基础知识点

2.先计算出每个学生的平均成绩、不及格的科目数;

3.根据平均成绩计算排名;

4.得出最后结果;

维度

评分

题目难度

⭐️⭐️⭐️

题目清晰度

⭐️⭐️⭐️⭐️⭐️

业务常见度

⭐️⭐️⭐️⭐️

三、SQL

1)使用聚合函数计算出每个学生的平均成绩、不及格科目数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
sid,
avg(score) as avg_score,
sum(case when score <60 then 1 else 0 end) as fail_num
from t_scores_034
group by sid

查询结果

2)根据平均成绩计算排名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select 
sid,
avg_score,
fail_num,
dense_rank()over(order by avg_score desc) as rn
from
(
--计算学生的平均成绩,不及格科目数
select
sid,
avg(score) as avg_score,
sum(case when score <60 then 1 else 0 end) as fail_num
from t_scores_034
group by sid
) t

查询结果

3.剔除不增长的记录,计算每次连续次数。(连续问题,这里使用双排序法,就不赘叙了)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
select
sid,
avg_score,
rn
from 
(
select 
sid,
avg_score,
fail_num,
dense_rank()over(order by avg_score desc) as rn
from
(
--计算学生的平均成绩,不及格科目数
select
sid,
avg(score) as avg_score,
sum(case when score <60 then 1 else 0 end) as fail_num
from t_scores_034
group by sid
) t
)tt
where fail_num >2

查询结果

四、建表语句和数据插入

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
--建表语句
CREATE TABLE t_scores_034 (
sid bigint COMMENT '学生ID',
cid bigint COMMENT '课程ID',
score bigint COMMENT '得分'
) COMMENT '用户课程分数'
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' 
;
-- 插入数据
insert into t_scores_034(sid,cid,score)
values
(1,1,90),
(1,2,50),
(1,3,72),
(2,1,40),
(2,2,50),
(2,3,22),
(3,1,30),
(3,2,50),
(3,3,52),
(4,1,90),
(4,2,90),
(4,3,72)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据仓库技术 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、题目
  • 二、分析
  • 三、SQL
  • 四、建表语句和数据插入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档