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

SQL每日一练(7)

继续做一下题目,这次是连续两道题目连在一起的,就一起做了。

原始表scores

classcoursescore
Class1data_visualization85
Class1data_visualization90
Class2data_visualization80
Class2data_visualization75
Class1sql78
Class1sql82
Class2sql70
Class2sql72

题目一:
查询 Class1 班级 data_visualization 平均分与 Class2 中 data_visualization 平均分的差值。
结果输出:Class1_data_visualization 平均分,Class2_data_visualization 平均分,差值。

题目二:
Class1 班级 data_visualization 平均分与 Class2 中 data_visualization 平均分的差值(四舍五入保留 2 位小数)?
填写示例:2.11

题目一思路:(考察avg还有case when then end)

平均数利用avg函数即可 查询中加入case data_visualization when score即可,差值直接计算两个平均数差值即可。

SELECTAVG(CASE WHEN class = 'Class1' AND course = 'data_visualization' THEN score ELSE NULL END) AS avg_class1_data_visualization,AVG(CASE WHEN class = 'Class2' AND course = 'data_visualization' THEN score ELSE NULL END) AS avg_class2_data_visualization,AVG(CASE WHEN class = 'Class1' AND course = 'data_visualization' THEN score ELSE NULL END) - AVG(CASE WHEN class = 'Class2' AND course = 'data_visualization' THEN score ELSE NULL END) AS diff
FROMscores;

题目二思路:(考察round函数)round(需要的值,四舍五入保留位数)

直接round即可

SELECT ROUND(AVG(CASE WHEN class = 'Class1' AND course = 'data_visualization' THEN score ELSE NULL END) - AVG(CASE WHEN class = 'Class2' AND course = 'data_visualization' THEN score ELSE NULL END), 2) AS difference
FROM scores;

 这里提一下我们是把where优化掉了,可以加where course省略掉case 里面的课程号,但是我们这样更好,少了一次查询。

题目三:
查询各班级 sql 成绩中低于于班级 sql 平均分的人员个数。
结果输出:班级,班级 sql 平均分,低于 sql 成绩平均分人数。

题目四:
班级 sql 平均分最低的班级是哪个?对应的低于 sql 成绩平均分人数是多少?
填写示例:Class1 5

题目三思路:利用sum窗口函数+(partition即可)

SELECT class,AVG(score) AS avg_sql,  -- 计算班级SQL平均分(聚合函数)SUM(CASE WHEN score < AVG(score) OVER (PARTITION BY class) THEN 1 ELSE 0 END) AS num_people
FROM scores
WHERE course = 'sql'  -- 过滤SQL课程
GROUP BY class;  -- 按班级分组统计

 题目四:order 排序limit1 然后查询人数即可

SELECT class,AVG(score) AS avg_sql,SUM(CASE WHEN score < AVG(score) OVER (PARTITION BY class) THEN 1 ELSE 0 END) AS num_people
FROM scores
WHERE course = 'sql'
GROUP BY class
ORDER BY avg_sql ASC
LIMIT 1;
http://www.xdnf.cn/news/8894.html

相关文章:

  • 动态规划-53.最大子数组和-力扣(LeetCode)
  • java 动态代理
  • 计算机系统简介(一)
  • 使用keil5实现RA4M2按键控制LED的状态
  • java学习记录——MyBatisPlus
  • 结合GIS谈谈Java面向对象(OOP,Object-Oriented Programming)的核心思想
  • redis集群配置
  • 20250525-更新 Anaconda 和 `pip` 中的库包
  • 嵌入式项目之QT页面制作
  • 英伟达破局1000 Token/秒!Llama 4以光速重塑AI推理边界
  • 为什么hash函数能减少哈希冲突
  • C++函数入门:void与int详解
  • 前端融球效果原理讲解+具体实现+模糊度,对比度基础教学
  • AI大模型学习二十八、ACE-Step:生成式AI音乐大模型简介与安装(一)
  • Android 启动流程开发注意事项
  • 蚕豆剥豆机机械原理设计与优化
  • 从零实现智能封面生成器
  • 机器学习课程设计报告 —— 基于口红数据集的情感分析
  • 【Linux网络】UDP套接字【实现英汉转化】
  • Linux Wlan hostapd框架梳理
  • 位运算的小结
  • 第四课 医学影像文献检索思路与方法
  • QPS Qinsy 9.6.5多波束海洋测量软件
  • 疏锦行Python打卡 DAY 11 常见的调参方式
  • 【Java工程师面试全攻略】专栏开篇:从面试流程到基础准备
  • 计算机网络学习20250525
  • Kafka 的日志清理策略:delete 和 compact
  • 【windows】终端/命令行显示中文乱码
  • TCP/IP 协议族
  • 人工智能数学基础实验(一):智能推荐系统实战