SQL 如何查找一个表里,每个班级各个学科的最高分?
SQL 如何查找一个表里,每个班级各个学科的最高分?
学生表:STUDENT(S#,SNAME,SAGE,SSEX,CLASSNO)
班级表:CLASS(CLASSNO,CLASSNAME)
课程表:COURSE(C#,CNAME,T#)
成绩表:SC(S#,C#,SCORE)
教师表:TEACHER(T#,TNAME)
SQL 创表脚本
-- Create table
create table CLASS
(
classno INTEGER not null,
classname NVARCHAR2(32)
);
-- Add comments to the columns
comment on column CLASS.classno
is '班级编号';
comment on column CLASS.classname
is '班级名称';
-- Create/Recreate primary, unique and foreign key constraints
alter table CLASS
add constraint PK_CLASS primary key (CLASSNO);
-- Create table
create table STUDENT
(
s# INTEGER not null,
sname NVARCHAR2(32),
sage INTEGER,
ssex NVARCHAR2(8),
classno INTEGER
);
-- Add comments to the columns
comment on column STUDENT.s#
is '学号';
comment on column STUDENT.sname
is '姓名';
comment on column STUDENT.sage
is '年龄';
comment on column STUDENT.ssex
is '性别';
comment on column STUDENT.classno
is '班级编号';
-- Create/Recreate primary, unique and foreign key constraints
alter table STUDENT
add constraint PK_STUDENT primary key (S#);
alter table STUDENT
add constraint FK_STUDENT_CLASS foreign key (CLASSNO)
references CLASS (CLASSNO);
-- Create table
create table TEACHER
(
t# INTEGER not null,
tname NVARCHAR2(16)
);
-- Add comments to the columns
comment on column TEACHER.t#
is '教师编号';
comment on column TEACHER.tname
is '教师姓名';
-- Create/Recreate primary, unique and foreign key constraints
alter table TEACHER
add constraint PK_TEACHER primary key (T#);
-- Create table
create table COURSE
(
c# INTEGER not null,
cname NVARCHAR2(32),
t# INTEGER
);
-- Add comments to the columns
comment on column COURSE.c#
is '课程号';
comment on column COURSE.cname
is '课程名称';
comment on column COURSE.t#
is '教师编号';
-- Create/Recreate primary, unique and foreign key constraints
alter table COURSE
add constraint PK_COURSE primary key (C#);
alter table COURSE
add constraint FK_COURSE_TEACHER foreign key (T#)
references TEACHER (T#);
-- Create table
create table SC
(
s# INTEGER,
c# INTEGER,
score INTEGER
);
-- Add comments to the columns
comment on column SC.s#
is '学号';
comment on column SC.c#
is '课程号';
comment on column SC.score
is '分数';
-- Create/Recreate primary, unique and foreign key constraints
alter table SC
add constraint FK_SC_COURSE foreign key (C#)
references COURSE (C#);
alter table SC
add constraint FK_SC_STUDENT foreign key (S#)
references STUDENT (S#);
INSERT INTO CLASS VALUES ('2019001', '火箭一班');
INSERT INTO CLASS VALUES ('2019002', '火箭二班');
INSERT INTO STUDENT VALUES ('1001', '曹操', '21', '男', '2019001');
INSERT INTO STUDENT VALUES ('1002', '貂蝉', '18', '女', '2019001');
INSERT INTO STUDENT VALUES ('1003', '袁绍', '22', '男', '2019001');
INSERT INTO STUDENT VALUES ('1004', '刘备', '23', '男', '2019002');
INSERT INTO STUDENT VALUES ('1005', '小乔', '20', '女', '2019002');
INSERT INTO STUDENT VALUES ('1006', '关羽', '21', '男', '2019002');
INSERT INTO TEACHER VALUES ('801', '叶平');
INSERT INTO TEACHER VALUES ('802', '李华');
INSERT INTO TEACHER VALUES ('803', '刘明');
INSERT INTO TEACHER VALUES ('804', '李斯');
INSERT INTO COURSE VALUES ('1', '计算机组成原理', '801');
INSERT INTO COURSE VALUES ('2', '数据结构', '801');
INSERT INTO COURSE VALUES ('3', '数据库原理及应用', '802');
INSERT INTO COURSE VALUES ('4', '计算机网络', '802');
INSERT INTO COURSE VALUES ('5', '软件工程', '803');
INSERT INTO COURSE VALUES ('6', 'C语言程序设计', '803');
INSERT INTO COURSE VALUES ('7', '人工智能', '804');
INSERT INTO COURSE VALUES ('8', '操作系统', '804');
INSERT INTO SC VALUES ('1001', '1', '61');
INSERT INTO SC VALUES ('1001', '2', '67');
INSERT INTO SC VALUES ('1001', '3', '91');
INSERT INTO SC VALUES ('1001', '4', '66');
INSERT INTO SC VALUES ('1001', '5', '95');
INSERT INTO SC VALUES ('1001', '6', '68');
INSERT INTO SC VALUES ('1001', '7', '73');
INSERT INTO SC VALUES ('1001', '8', '99');
INSERT INTO SC VALUES ('1002', '1', '94');
INSERT INTO SC VALUES ('1002', '2', '85');
INSERT INTO SC VALUES ('1002', '3', '69');
INSERT INTO SC VALUES ('1002', '4', '78');
INSERT INTO SC VALUES ('1002', '5', '70');
INSERT INTO SC VALUES ('1002', '6', '77');
INSERT INTO SC VALUES ('1002', '7', '83');
INSERT INTO SC VALUES ('1002', '8', '81');
INSERT INTO SC VALUES ('1003', '1', '77');
INSERT INTO SC VALUES ('1003', '2', '70');
INSERT INTO SC VALUES ('1003', '3', '97');
INSERT INTO SC VALUES ('1003', '4', '92');
INSERT INTO SC VALUES ('1003', '5', '65');
INSERT INTO SC VALUES ('1003', '6', '89');
INSERT INTO SC VALUES ('1003', '7', '79');
INSERT INTO SC VALUES ('1003', '8', '66');
INSERT INTO SC VALUES ('1004', '1', '70');
INSERT INTO SC VALUES ('1004', '2', '95');
INSERT INTO SC VALUES ('1004', '3', '78');
INSERT INTO SC VALUES ('1004', '4', '68');
INSERT INTO SC VALUES ('1004', '5', '72');
INSERT INTO SC VALUES ('1004', '6', '98');
INSERT INTO SC VALUES ('1004', '7', '81');
INSERT INTO SC VALUES ('1004', '8', '84');
INSERT INTO SC VALUES ('1005', '1', '93');
INSERT INTO SC VALUES ('1005', '2', '96');
INSERT INTO SC VALUES ('1005', '3', '73');
INSERT INTO SC VALUES ('1005', '4', '76');
INSERT INTO SC VALUES ('1005', '5', '85');
INSERT INTO SC VALUES ('1005', '6', '90');
INSERT INTO SC VALUES ('1005', '7', '77');
INSERT INTO SC VALUES ('1005', '8', '62');
INSERT INTO SC VALUES ('1006', '1', '84');
INSERT INTO SC VALUES ('1006', '2', '86');
INSERT INTO SC VALUES ('1006', '3', '63');
INSERT INTO SC VALUES ('1006', '4', '66');
INSERT INTO SC VALUES ('1006', '5', '60');
INSERT INTO SC VALUES ('1006', '6', '87');
INSERT INTO SC VALUES ('1006', '7', '65');
INSERT INTO SC VALUES ('1006', '8', '99');
</div>
```sql
SELECT s.classno,
c.cname,
max(sc.score)
FROM student s
LEFT JOIN sc
ON s.s# = sc.s#
LEFT JOIN course c
ON sc.c# = c.c#
GROUP BY s.classno,c.cname
ORDER BY s.classno;
SELECT s.classno,
c.cname,
sc.score
FROM student s
LEFT JOIN sc
ON s.s# = sc.s#
LEFT JOIN course c
ON sc.c# = c.c#
ORDER BY c.cname,sc.score desc,s.s#
参考资料
SQL 如何查找一个表里,每个班级各个学科的最高分?的更多相关文章
- sql语句查询一个表里面无重复并且按照指定字段排序的sql语句
SELECT a.* FROM product_template a INNER JOIN (SELECT p_id,MAX(ID) as max_id FROM product_template w ...
- MySQL GROUP_CONCAT函数使用示例:如何用一个SQL查询出一个班级各个学科第N名是谁?
如何用一个SQL查询出一个班级各个学科第N名是谁? 首先贴出建表语句,方便大家本地测试: -- 建表语句 CREATE TABLE score ( id INT NOT NULL auto_incre ...
- SQL查询一个表里面某个字段值相同的数据记录
好长时间没有用SQL了...还停留在学生时代的水平... 转: 昨天遇到个面试题:查询一个表里面某个字段值相同的数据记录,好久没有写过这种,还真的花了点时间才写出来.如表g_carddetail,有 ...
- sql关于对一个字段同时满足多条件判断来筛选查询
表所有数据 查询userName为abc或xyz的 以下为本菜鸟项目中遇到的问题: 背景: /** * wangjie 180629 * * 学生需要查询四种可能的消息 * 1.班级管理员发 ...
- ThinkPHP 条件是一个表里面的两个字段比较
ThinkPHP 条件是一个表里面的两个字段比较 今天群里有人问,thinkphp框架,条件是一个表里的两个字段,怎么查询. 然后就做了下测试: 比如查询出 手机号就是微信号 的用户: (1)首先,正 ...
- 【Java.Regex】使用正则表达式查找一个Java类中的成员函数
代码: import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; imp ...
- 使用oracle 的 PL/Sql 定时执行一个存储过程
CSDN日报20170322--<关于软件研发的一些体会总结> 同步博客至 CSDN ,让更多开发者看到你的文章 看微博技术大咖解析互联网应用架构实战 使用oracle 的 PL/Sql ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
- c语言经典算法——查找一个整数数组中第二大数
题目: 实现一个函数,查找一个整数数组中第二大数. 算法思想: 设置两个变量max1和max2,用来保存最大数和第二大数,然后将数组剩余的数依次与这两个数比较,如果这个数a比max1大,则先将max1 ...
随机推荐
- google protobuf service使用
http://note.youdao.com/noteshare?id=c59aaf827878e7a3611588f3abcd3bee
- 手脱nSPack 1.3
1.PEID查壳 nSPack 1.3 -> North Star/Liu Xing Ping 2.载入OD,pushad下面的call哪里使用ESP定律,下硬件访问断点,然后shift+F9运 ...
- 前端PHP入门-011-可变函数
可变函数,我们也会称呼为变量函数.简单回顾一下之前的知识点: <?php $hello = 'world'; $world = '你好'; //输出的结果为:你好 echo $$hello; ? ...
- OpenCV---直方图反向投影
一:直方图反向投影的方法 二:二维直方图的表示 (一)直接显示 def hist2D_demo(image): hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV) hi ...
- 使用RVM轻松部署Ruby环境
Ruby用得不多,但发现有业务需要部署指定的版本和插件.起初找了一些Fedora的src.rpm重新打包,发现依赖问题比较多,最终还是费劲的把el6的包编出来了. 不巧今天又有业务要求el5的包,原本 ...
- 【Web】Struts之namespace
ZZ:struts2学习:配置篇之namespace 在struts1中是没有命名空间这个概念的,通过命名空间我们可以将所有的action配置划分为一个个逻辑单元,每个单元都有它自己的标识前缀.命名控 ...
- spring boot 2.0.3+spring cloud (Finchley)9、 安全组件Spring Boot Security
官方文档 一.Spring Security介绍 Spring Security是Spring Resource社区的一个安全组件,Spring Security为JavaEE企业级开发提供了全面的安 ...
- 爬虫实战--使用Selenium模拟浏览器抓取淘宝商品美食信息
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.common.exce ...
- ASLR
@author:dlive ASLR address space layout randomization 微软从windows vista/windows server 2008(kernel ve ...
- 一款线程安全、基本功能齐全的STL
MiniSTL 目前正在完成一个STL,主要想通过该项目锻炼C++编程.模板编程.熟悉STL.锻炼数据结构和算法能力. 项目的目标是实现STL的几大构件+线程安全.项目过程中主要参考SGI STL源码 ...