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

经典SQL查询问题的练习第一天

首先有三张表,学生表、课程表、成绩表

student:studentId,studentName;

course:courseId,courseName,teacher;

score:score,studentId,courseId;

接着有以下几道题目:

①查询课程编号为‘0006’的总成绩:

首先总成绩,使用Sum(score), 接着根据课程编号:courseId

成绩只有score表里面有,同时还能获取到另一个必要条件,因此只需一个表

SELECT SUM(score) FROM score WHERE courseId='0006';

②查询选了课程编号为'0006'的学生人数:

又要有课程编号,又要有学生人数,这里仅仅需要score表就行了,使用条件courseId(进行选择)和studentId(获取学生人数)

SELECT COUNT(studentId) FROM score WHERE courseId='0006';

③查询各科成绩最高和最低分:

要获取最高和最低使用MAX()和MIN(),各科则需要按照课程Id(courseId)分组

SELECT courseId,MAX(score),MIN(score) FROM score GROUP BY courseId;

④查询每门课程被选修的学生人数:

每一门:说明要分组,GROUP BY(courseId),学生人数:COUNT(student)

SELECT courseId,COUNT(studentId) FROM score GROUP BY courseId;

⑤查询平均成绩大于60分的学生的学号

平均成绩:AVG(score),同时还要有学号studentId,同样使用score表,注意,有很多门课程求平均值,所以要按照学生分组,在以上基础上在做选择要60分以上的,使用HAVING

SELECT studentId,AVG(score) FROM score GROUP BY studentId HAVING AVG(score)>60;

⑥查询至少选修三门课程的学生学号

要有课程和学号,一个score表就够了,要想具体知道一个学生选修的课程数,同样需要按学生分组

SELECT studentId,COUNT(courseId) FROM score GROUP BY student HAVING COUNT(courseId) >=3;

⑦查询所有有过不及格成绩的学生的姓名(不重复)

查询姓名需要student表,不及格成绩的就同时要使用score表,这里则要两个表,使用studentId来连接,要求不重复则使用DISTINCT

SELECT DISTINCT studentName FROM student st LEFT JOIN score sc ON st.studentId=sc.studentId WHERE score <60;

⑧查询两门及以上课程不及格的学生姓名

SELECT studentName,COUNT(studentName) FROM student st LEFT JOIN  score sc ON st.studentId=sc.studentId  WHERE score < 60 GROUP BY studentName  HAVING COUNT(studentName)>=2;

http://www.xdnf.cn/news/9733.html

相关文章:

  • Spring Tool Suite(STS)4国内下载与安装教程
  • 最优控制:从变分法到庞特里亚金原理
  • Rocky Linux上安装Go
  • 数据可视化--使用matplotlib绘制高级图表
  • 理解频域滤波
  • 构建一个“论文检索 + 推理”知识库服务,支持用户上传 PDF/LATEX 源码后,秒级检索并获得基于内容的问答、摘要、引用等功能
  • ChemDraw 2023|Win英文|化学结构编辑器|安装教程
  • Kotlin 中集合遍历有哪几种方式?
  • Xshell连接Linux时出现Warning:The remote SSH server rejected X11 forwarding request.
  • Linux---系统守护systemd(System Daemon)
  • 江西某石灰石矿边坡自动化监测
  • 【Linux 基础知识系列】第二篇-Linux 发行版概述
  • LVS +Keepalived高可用群集
  • 设计模式-工厂方法模式
  • 【Python 进阶】抽象基类(Abstract Base Class)
  • 编译原理笔记 2025/4/22
  • 容器(如 Docker)中,通常不建议运行多个进程或要求进程必须运行在前台
  • Linux系列-2 Shell常用命令收集
  • fingerprint2浏览器指纹使用记录
  • Spring框架学习day4--Spring集成Mybatis(IOC)
  • Vue 3 的路由管理
  • 小白成长之路-Linux日志管理
  • [MMU]IOMMU的主要职能及详细的验证方案
  • 3 分钟学会使用 Puppeteer 将 HTML 转 PDF
  • Axure设计案例——科技感渐变线性图
  • 不可变集合类型转换异常
  • Astra学习之-如何修改Header-logo和favicon图标
  • Linux | Shell脚本的基础知识
  • 基于ubuntu安装hadoop
  • .NET8入门:14.ASP.NET Core MVC进阶——Model