用一条SQL语句 查询出每门课程都大于80分的学生姓名" 的实现方式

建表:

 1 create table Score(
 2 name varchar(20),
 3 course varchar(20),
 4 score int)
 5
 6 go
 7
 8 insert Score
 9 select ‘HanMeimei‘,‘Chinese‘,81 union all
10 select ‘HanMeimei‘,‘Mathematics‘,75 union all
11 select ‘HanMeimei‘,‘History‘,81 union all
12 select ‘HanMeimei‘,‘Geography‘,75 union all
13 select ‘LiLei‘,‘Chinese‘,88 union all
14 select ‘LiLei‘,‘Mathematics‘,90 union all
15 select ‘JimGreen‘,‘Chinese‘,81 union all
16 select ‘JimGreen‘,‘Mathematics‘,100 union all
17 select ‘JimGreen‘,‘English‘,90

方法1:  找出有科目没有达到80分的姓名,然后过滤

1 select distinct name
2 from score a
3 where not exists(select 1 from score where a.name=name and score<80)
1 select distinct name
2 from score
3 where name not in (select name from score where score<80)

方法2:  通过分组后过滤的方式

1 select name
2 from score
3 group by name
4 having COUNT(1)=SUM(case when score>=80 then 1 else 0 end)
1 select name
2 from score
3 group by name
4 having MIN(score)>=80

结果:

name

JimGreen
LiLei

在记录较少(9条)的情总下  以上四种方式的执行计划(SQL2008)用时比例为

14:14:11:11

时间: 2024-10-14 03:40:38

用一条SQL语句 查询出每门课程都大于80分的学生姓名" 的实现方式的相关文章

用一条sql语句查询出“每门”课程都大于80分的学生姓名

Name chengji fengshu张三 数学 75张三 语文 81李四 数学 90李四 语文 76王五 数学 81王五 语文 100王五 英语 90 SQL Server: select distinct [Name] from [表] where [Name] not in ( select [Name] from [表] where [fengshu]<=80) 或者 select distinct name from A minus select name from A where

SQL查询出每门课都大于80 分的学生姓名

Course表如下: 查询出每门课都大于80 分的学生姓名有两种方法. 1.select  distinct name from Course where name not in (select distinct name from Course where score<=80) 2.select  name    from Course group by name having min(score)>80

InterviewQuestion_SQLServer_Probl_查询每门课都大于80分的学生姓名

题目:用一条SQL语句查询出每门课都大于80分的学生姓名. 最近面试C#开发工程师,碰到上面这个考数据库的题目,自己感觉有点难度,没有思路,现将找到的解决方案整理如下: 文件:SQLQuery1.sql /* 环境:Microsoft SQL Server 2012 工具: Microsoft SQL Server Management Studio 数据库: Interview 数据表: grade 详情: name class score 张三 语文 81 张三 数学 75 李四 语文 76

查询每门课都大于80分的学生姓名

思路就是反过来想就简单了 最后一句这样写就意思明显 SELECT distinct name from (select  name from zzxxz where score<=80) select distinct name from zzxxz where name not in (select distinct name from zzxxz where score<=80)

用一条SQL语句查出每门课都大于80分的学生的姓名

用一条sql语句查询出所有课程都大于80分的学生名单: name cource score 张三 语文 81 张三 数学 75 李四 语文 76 李四 数学 90 王五 语文 81 王五 数学 100 王五 英语 90 1 SET FOREIGN_KEY_CHECKS=0; 2 3 -- ---------------------------- 4 -- Table structure for grade 5 -- ---------------------------- 6 DROP TABL

[关于SQL]查询成绩都大于80分的学生

1.用一条SQL语句 查询出每门课都大于80分的学生姓名name kecheng fenshu张三 语文 81张三 数学 75李四 语文 76李四 数学 90王五 语文 81王五 数学 100王五 英语 90 CREATE TABLE [dbo].[chengji]( [name] [nvarchar](50) NULL, [kecheng] [nvarchar](50) NULL, [fenshu] [int] NULL ) ON [PRIMARY] GO INSERT [dbo].[chen

关于使用一条SQL语句 找出同时符合多个tag条件的记录集合算法

表结构 Tag Table:{tag_id, tag_name}  #标签表 News Table:{news_id, title,......}  #新闻表 NewsTags Table:{tag_id, news_id}  #新闻的标签关系表 解释: 一条新闻,有多个tag标签,例如: 新闻a{Tag1,Tag2, Tag3, Tag4} 新闻b{Tag1,Tag6, Tag7, Tag8} 新闻c{Tag8,Tag9, Tag10, Tag1} 新闻...{Tag..., .....} 搜

树形结构表查询,只用一条SQL语句查询所有父级ID解决办法

在树形结构表查询中用得最多的就是查询指定分类的所有下级分类,这个性能比较好的解决方案是为分类加一个编码(路径)把父级的ID都拼接上,最后通过like 'x%'就能把所有下级分类select出来.但是有时也会遇到反过来,找出指定分类的所有上级分类,这个情况尤其在分销或类传销的系统中最常见,因为他们分成都是上级分成,所以要找出指定人的上级集合. 下面分享一下我的解决方案(只用一条SQL语句.不用存储过程.函数): 有下面所在的新闻分类表. ParentID为父级的ID. 下面要找出ID为52的所有上

数据库 将多条SQL语句查询的内容整合成为一个元组

1.情景再现 分类信息 住户 租户 快递 亲友访问 花苑 138 25 44 89 新城 34 150 78 34 以上的一张表中,假如要分别在两个住宅小区统计各类进出的人数,进出的类型可以分为是住户,租户,快递以及亲友访问四个类型. 但是实际的表设计中,住户以及租户是属于这个小区,可以直接统计出来,但是快递以及亲友访问则需要从进出记录查找. 换言之,就是表中的每个元组的数据是从多个表中查出来的,同时可能是用四条sql语句中查询出来的.使用如下表达: ①: select t.name as co