博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[置顶] 一道经典的sql面试题不同的写法
阅读量:7110 次
发布时间:2019-06-28

本文共 1455 字,大约阅读时间需要 4 分钟。

用一条SQL语句   查询出每门课都大于80分的学生姓名,表( #test)如下:

  
Name Course Mark
张三 语文 81
张三 数学 75
李四 语文 76
李四 数学 90
王五 英语 100
王五 语文 81

 

create table #test

(
Name varchar(10),
Course varchar(10),
Mark float
)

insert into #test

select '张三', '语文', 81 union
select '张三', '数学', 75 union
select '李四', '语文', 76 union
select '李四', '数学', 90 union
select '王五', '英语', 100 union
select '王五', '语文', 81

方法A select distinct Name

from #test A
where not exists(select Course
 from #test
 where Mark < 80 and Name = A.Name)

方法B

select * from #test a where mark > 80 and (select count(*) from #test where name=a.name)= (select count(*) from #test where name=a.name and mark > 80)

方法C

select distinct name from #test a where not exists(select * from #test where a.name=name and mark<80) (我认为这种较好)

方法D

select distinct name from  #test  where

name not in (
select name from #test where mark<=80
)

方法E

select name,min(mark) from #test group by name having min(mark)>80

-----66666
DECLARE @test table (  Name varchar(10),  Course varchar(10),  Mark float) 
insert into @test  select   '张三  ',   '语文  ', 81
 union select   '张三  ',   '数学  ', 75
union select   '李四  ',   '语文  ', 76
 union select   '李四  ',   '数学  ', 90
 union  select   '王五  ',   '英语  ', 100
 union  select   '王五  ',   '语文  ', 81  
SELECT NAME FROM @test GROUP BY name HAVING count(*)=count(case when mark>=80 then 1 else null end) 或者  
SELECT NAME FROM @test GROUP BY name HAVING count(*)=sum(case when mark>=80 then 1 else 0 end)

 

---方法F

select name from #test group  by name having min(mark)>80

 

转载地址:http://hdmhl.baihongyu.com/

你可能感兴趣的文章
THINKPHP_URL简化设置
查看>>
关于Studio中引用mipmap目录下图片的问题
查看>>
服务器断电后自动重启
查看>>
Ubuntu下添加Eclipse快捷方式
查看>>
页面操作 页面放大/缩小 怎么确定恢复正常大小
查看>>
以两军问题为背景来演绎Basic Paxos
查看>>
统计中位值的一般概念
查看>>
gns3模式与使用csr1000v
查看>>
感想二
查看>>
Mangos魔兽世界服务端初探(1)--游戏服务端主体结构与消息分发
查看>>
SonarQube svn 认证失败的解决办法
查看>>
C++string与VC++CString互转
查看>>
Ubuntu查找占用端口进程并删除
查看>>
Rgb to Yuv,Tuv to Rgb转换(C# emgucv)
查看>>
JSTL标签+EL表达式
查看>>
PHP中的java方式重载
查看>>
CSS3:RESET、标准注释、多屏幕尺寸兼容写法。
查看>>
小得瑟一下,记一下一个SQL语句
查看>>
osx分区合并命令行操作
查看>>
Android 签名出错
查看>>