【数据库】数据库查询之关键字except,having

数据库系列主要介绍工作和学习中遇到的一些问题,以下举例介绍:

假设有个学生成绩表 grade, 有4列:id 主键标识列,学生姓名 student, 课程course, 考试成绩 score, 表数据如下:

 

 

idstudentcoursescore
1张三英语70
2李四英语81
3王五英语60
4赵六英语90
5张三测试50
6王五测试75
7张三开发80
8王五开发90
9赵六开发85
10张三数学85
11王五数学70

 

 

1.如果我们想要查询所有课程成绩都大于80分的学生姓名,应该怎么查询?

 

2.如果我们想要查询选择课程数量大于或等于2的学生姓名,应该怎么查询?

 

解决思路:

一、创建表格

 

create table grade (
id int identity(1,1),
student varchar(20),
course varchar(20),
score int
);

二、插入数据

 

 

insert into grade values('张三','英语',70);
insert into grade values('李四','英语',81);
insert into grade values('王五','英语',60);
insert into grade values('赵六','英语',90);
insert into grade values('张三','测试',50);
insert into grade values('王五','测试',75);
insert into grade values('张三','开发',80);
insert into grade values('王五','开发',90);
insert into grade values('赵六','开发',85);
insert into grade values('张三','数学',85);
insert into grade values('王五','数学',70);

 

三、查询数据


问题1.分析:查询的是学生姓名student,条件是每科的考试分数都大于80分。

我们可以逆向考虑,查询分数小于等于80分的学生姓名

 

select distinct student from grade where score<=80 

因为学生有多门课程,当学生多门课程的分数满足条件时,会出现重复数据,通过distinct关键词过滤重复数据

 

只要有一门课程的分数小于等于80,就是我们要排除的数据,所以我们可以通过联合查询方式差集except进行排除。

查询所有不重复学生记录:

select distinct student from grade;

差集查询:

 

 

select distinct student  from grade
except
select distinct student from grade where score<=80;

其实except关键词已经有去除重复数据的功能,所以最终可以优化为:

 

 

select student  from grade
except
select student from grade where score<=80;

 

如果我不想用差集去查询,是否还有其他方法呢?其实思路是一样的,先查询出分数小于等于80分的学生姓名,然后再排除:

 

select distinct student from grade where student not in (select student from grade where score<=80);
 
select student from grade group by student having student not in (select student from grade where score<=80);
select student from grade where student not in (select student from grade where score<=80) group by student;

 

第二条和第三条查询语句结果是一样的,但是having和where还是有区别,having是分组后筛选,而where是筛选后再分组。
 

问题2.分析:查询的是学生姓名student,条件是考试的课程大于等于2。

我们知道这里student和course组合是唯一的,所以可以通过对student进行分组,查询到每个学生的课程数量:

 

select student,COUNT(*) as 课程数量 from grade group by student;

然后可以对分组后的数据列表进行筛选,关键词having

 

select student from grade group by student having COUNT(*)>=2;
 

 

这篇文章主要学习了联合查询中的差集except(oracle数据库是minus),not in 排除方法以及分组group by和分组后筛选having.

 

 

 


 

 

 

 

 

 

 


 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568771.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何删除github远程仓库?三部搞定!

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这个可爱的宝藏女孩在努力的道路上与你一起同行&#xff01; 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xf…

【测试】测试用例8大法

测试用例的设计方法不是单独存在的&#xff0c;具体到每个测试项目里都会用到多种方法&#xff0c;每种类型的软件有各自的特点&#xff0c;每种测试用例设计的方法也有各自的特点&#xff0c;针对不同软件如何利用用例设计方法是非常重要的。在实际测试中&#xff0c;往往是综…

js实战代码系列—周杰伦给你报时间+网页页签制作模板+jQuery初体验

等到下次需要用的时候&#xff0c;可以回来找模板用哈哈哈哈&#xff01; 刚碰jQuery&#xff0c;今天是个好日子&#xff0c;明天继续学jQuery&#xff0c;明天也是个好日子。 https://blog.csdn.net/hanhanwanghaha一个超级无敌可爱的人鸭 欢迎您的关注&#xff01; 欢迎关注…

【资讯】2017年最好的25大发明,你最钟爱哪个?

引言《时代周刊》每年都会评出一份有趣的发明榜单&#xff0c;悉数一年间世界范围内的重大发明。今年的榜单出来后&#xff0c;「得到」作者马徐骏抢先进行了解读。带你一起看看&#xff0c;2017年有哪些发明正在悄然改变我们的生活。1. 阿迪达斯的4D跑鞋——Futurecraft这款鞋…

js实战代码系列—带你玩jQuery带你飞

https://blog.csdn.net/hanhanwanghaha一个超级无敌可爱的人鸭 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09; 目录前言引入库一个简单的自定义动画模板弹…

【资讯】这10大科技,将彻底改变你的生活

引言 每一次大的科技突破&#xff0c;都会引发人们生活方式的变革。未来&#xff0c;有哪些科技将改变你我的生活&#xff1f; 著名高科技投资人王煜全&#xff0c;筛选出即将改变未来的10大科技&#xff0c;带你提前看看未来的生活。 1. 人工智能 人工智能的风口已过&…

软工学子与你一起了解资金时间价值 之 复利(利滚利)+ 贷款的基本常识 + 现金流量图 ——《工程经济学》

研究经济学的理由就是【为了避免被经济学家欺骗】——琼罗宾逊 前段时间学校在整治校园贷的事情&#xff0c;这让我想到高利贷&#xff0c;刚好最近在《工程经济学》中讲到复利的知识&#xff0c;花时间用通俗易懂的话来讲解一下 先来看看重点概况 一、现金流量图&#xff1a;…

【商业】10个经济学概念,让你看清复杂世界

引言 「得到」作者薛兆丰老师和你分享10个经济学入门概念&#xff0c;带你走近经济学。 1. 成本 释义&#xff1a;成本是你做选择时&#xff0c;放弃的最高代价。 案例&#xff1a;你有两个小时的休息时间&#xff0c;你可以选择打游戏、看电影或者看书。当你选择了打游戏时…

连接真机开发安卓(Android)移动app MUI框架——混合式开发(一) (敲详细)

从接触安卓开发的第一天起&#xff0c;我想我已经爱上了开发&#xff0c;哈哈哈&#xff0c;愿你我坚持下去的理由都是热爱&#xff0c;共勉&#xff01;这几天没有更新博客&#xff0c;是因为我学习去了&#xff08;没有相见的日子&#xff0c;我在努力哈哈哈&#xff09;。有…

【商业】向阿里巴巴学习11个挣大钱的小心机

引言 在刚过去的双十一&#xff0c;天猫单日交易达1682亿元&#xff0c;创造了全球零售史上的纪录。阿里巴巴销售神话的秘诀何在&#xff1f;很重要的一个原因&#xff0c;正是看似不起眼的商业“套路”的叠加使用。 具体有哪些套路呢&#xff1f;中国著名商业顾问刘润老师的…

软件测试基础:MantisBT的安装配置及使用——BUG管理工具

这学期学习的移动app测试&#xff0c;真的晕&#xff0c;一门无聊且枯燥的课&#xff0c;但是还是得学&#xff0c;越是无聊&#xff0c;越要当成男朋友来看待&#xff0c;共勉&#xff01;以前用过一个工具禅道还不错&#xff0c;老师还没讲测试的时候就已经用到过一些了&…

【测试】提交BUG的标准规范

我们在软件测试过程中&#xff0c;发现了BUG后&#xff0c;如何提交一个高质量的BUG, 其实我们可以总结一下规范的&#xff0c;文章主要从以下几方面讨论&#xff1a; Bug有效性 提交的Bug必须是有效的&#xff0c;就要求我们在提交Bug时&#xff0c;确认&#xff1a; 1、…

连接真机开发安卓(Android)移动app MUI框架——混合式开发(二) 带你项目开发(最新版)

今天是很丧的一天&#xff0c;做什么都提不起兴趣&#xff0c;不知道何时才能做到道家的“无为&#xff0c;而无所不为”&#xff0c;也无法理解范仲淹的“不以物喜不以己悲”。可是再没兴趣&#xff0c;学习还是要继续&#xff01;&#xff01;&#xff01;为了让自己放松&…

【Excel】设置数据有效性以及COUNTIF用法

日常工作中&#xff0c;我们经常会用到办公软件Excel&#xff0c;然而实际使用中&#xff0c;我们只是用了很小一部分的功能。下面我想介绍的是如何设置数据有效性&#xff0c;以及对某个数据进行个数统计&#xff0c;具体我们通过以下两个例子详细说明一下。 设置数据有效性 …

Apache默认端口80被占用无法启动服务问题

在实际工作中&#xff0c;有时运行Apache服务&#xff0c;会发现Apache默认端口80被占用无法启动服务&#xff0c;然后查找时却发现无法具体哪个进程被占用&#xff0c;这个时候我们应该怎样去解决问题呢&#xff1f; 1&#xff09;首先通过cmd 的netstat -ano命令查看具体哪个…

monkey自动化测试移动app 操作指南——真机 安卓(Android)app测试

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09; 前言 Monkey是Android中的一个命令行工具&#xff0c;可以…

解决Word、Excel启动时提示向程序发送命令出现问题

还记得突然有一天&#xff0c;打开Excel或者word后&#xff0c;总是提示“向程序发送命令出现问题”&#xff0c;那时候很郁闷&#xff0c;不知道什么问题&#xff0c;重启电脑等方法都没用&#xff0c;然后度娘查找&#xff0c;最后才发现是因为按照额外程序导致的&#xff0c…

抠图把你头发都抠没了?真的爱了这在线免费抠图,带你又快又简单地抠图!

哈哈哈哈 一个超级无敌可爱的人鸭 在线教你怎么偷懒哈哈哈 https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09…

【资讯】全球瞩目!无人驾驶真的来了!

所有人都知道&#xff0c;这一天会来&#xff01; 但谁也没想到&#xff0c;来得这么快&#xff01; 出发&#xff01; 2017年12月2日&#xff0c;一声令下&#xff0c;深圳的无人驾驶公交车正式上路了&#xff01; 一辆辆不需要驾驶员的公交车&#xff0c;从深圳福田穿梭驶…

连接真机开发安卓(Android)移动app MUI框架——混合式开发(三) (连接后端)

https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 如有转载&#xff0c;请注明出处&#xff08;如不注明&#xff0c;盗者必究&#xff09; 分享今天看到的两句文案&#xff1a;我们必须全力以赴&…