where 子句筛选和having子句筛选实例

在分组前筛选使用where子句,分组后筛选使用having子句。

创建表

-- 创建学生课程表
create table tb_record
(
recid       int auto_increment comment '选课记录编号',
sid         int not null comment '选课学生',
cid         int not null comment '所选课程',
seldate     date not null comment '选课时间日期',
score       decimal(4,1) comment '考试成绩',
primary key (recid),
foreign key (sid) references tb_student (stuid),
foreign key (cid) references tb_course (couid),
unique (sid, cid)
);

导入信息

-- 插入数据
insert into tb_record (sid, cid, seldate, score) values
(1001, 1111, '2017-09-01', 95),
(1001, 2222, '2017-09-01', 87.5),
(1001, 3333, '2017-09-01', 100),
(1001, 4444, '2018-09-03', null),
(1001, 6666, '2017-09-02', 100),
(1002, 1111, '2017-09-03', 65),
(1002, 5555, '2017-09-01', 42),
(1033, 1111, '2017-09-03', 92.5),
(1033, 4444, '2017-09-01', 78),
(1033, 5555, '2017-09-01', 82.5),
(1572, 1111, '2017-09-02', 78),
(1378, 1111, '2017-09-05', 82),
(1378, 7777, '2017-09-02', 65.5),
(2035, 7777, '2018-09-03', 88),
(2035, 9999, curdate(), null),
(3755, 1111, curdate(), null),
(3755, 8888, curdate(), null),
(3755, 9999, '2017-09-01', 92);

如图所示

– 查询平均成绩大于等于90分的学生的学号和平均成绩

1.首先使用having在分组后进行筛选

SELECTsid AS 学号,AVG( score ) AS 平均分
FROMtb_record
GROUP BYsid
HAVINGAVG( score )>= 90;

这个比较简单,直接在group by 分组后添加having 条件就可以了。

2.使用where 进行筛选

SELECT DISTINCTb.sid AS 学号,b.a AS 平均分
FROMtb_record eINNER JOIN ( SELECT sid, avg( score ) AS a FROM tb_record GROUP BY sid ) b ON e.sid = b.sid
WHEREb.a >= 90;

因为要求平均成绩,我们知道where 后面不允许跟聚合函数,所以我们只能采用子查询,把平均成绩查出来当作一个表,再和这个表链接查询,最后用where 筛选就可以了。

查询平均成绩大于等于90分的学生的学号和平均成绩相关推荐

  1. 21. 查询表sc——查询平均成绩大于等于90分的学生学号和平均成绩

    SELECTsno,AVG(grade) FROMsc GROUP BYsno HAVINGAVG(grade) >= 90;

  2. oracle学号查询平均成绩,orcal数据库中查询出平均成绩大于60分的同学的学号和平均成绩...

    1.创建测试表, create table test_score(id varchar2(20),sid varchar2(20), score number(10)); 2.插入测试数据: inse ...

  3. 输出各科科目成绩大于90分的学生

    建表语句: CREATE TABLE `student` (`name` varchar(50) DEFAULT NULL,`sub` varchar(50) DEFAULT NULL,`score` ...

  4. 2.查询平均成绩大于60分的同学的学号和平均成绩

    select sid,avg(score) from SC group by sid having avg(score)>60; Student表: sc表: Teacher: Course表:

  5. 低于90分的成绩 java_查询平均成绩低于60分的学生学号、姓名及成绩。

    查询平均成绩低于60分的学生学号.姓名及成绩.以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 查询平均成绩低于60分的学 ...

  6. 查询所有科目成绩都大于90分的学生姓名

    查询所有课程成绩都大于90分的学生: CREATE TABLE `student` (`id` int(11) NOT NULL AUTO_INCREMENT,`stu_name` varchar(2 ...

  7. 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩

    建表语句点击详见 – 查询平均成绩大于等于60分的同学的学生编号和学生姓名和平均成绩 SELECTst.s_id, st.s_name, ROUND(AVG(sc.s_score),2)FROM st ...

  8. 洪君:查出“张”姓学生中平均成绩大于75分的学生信息查询出每门课程的成绩都大于80的学生

    查询出"张"姓学生中平均成绩大于75分的学生信息 表名:student_score  name course score  张青 语文 72  王华 数学 72  张华 英语 81 ...

  9. 有一个班4个学生,5门课程①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生分别编3个函数实

    有一个班4个学生,5门课程. ①求第1门课程的平均分; ②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩; ③找出平均成绩在90分以上或全部课程成绩在85分以上的学生. 分别编 ...

最新文章

  1. tensorboard图上存在直线_高中数学必修二直线与圆:真是让我没想到,他俩的关系还挺不简单...
  2. C#.net模拟提交表单POST
  3. 机器学习算法清单!附Python和R代码
  4. php文本分割成csv,php将文本文件转换csv输出的方法
  5. 【知识积累】DES算法之C#加密Java解密
  6. 实验十一:图形界面二
  7. Oracle数据库管理员职责(二)
  8. mysql sql trace_用MySQL的optimizer_trace进行sql调优
  9. spring中定时器cron表达式在线生成器
  10. java 获取vm配置参数_如何获取Java中的Java VM规范?
  11. DHCP的IP地址租约、释放
  12. 电脑iphone,如何从 iPhone 传输图片到电脑
  13. 微信小程序优惠券到期提醒功能设定指引
  14. 【AtCoder】ARC074
  15. 分享CVPR2019(附会议视频全记录)
  16. 99.99%人都不知道的“##“里用法
  17. oppo安卓面试题,万字Android技术类校招面试题汇总,GitHub标星3.2K
  18. Spring源码阅读笔记(一):整体架构与核心技术
  19. GetMessage()用法实例
  20. ARM基础教程 1 | ARM、Cortex-M与ARMv8-M

热门文章

  1. iOS 按钮加下划线随之移动
  2. 【油猴脚本】生成纯元素CSS选择器(附开发笔记)
  3. 数据结构——Prim法最小树生成
  4. 数字时钟(数码管显示)例如:23-59-23
  5. HPS基本概念及其设计
  6. 房型图户型图识别解析服务1.0版本发布
  7. 测试硬件工程师——第一天(万用表)
  8. Font 楷体_GB2312 is not available to the JVM. See the Javadoc for more det
  9. 电磁波实验之理想介质中的均匀平面波
  10. moment.js格式化时间的使用