完整版常见SQL笔试题.docx

上传人:b****6 文档编号:8452014 上传时间:2023-01-31 格式:DOCX 页数:10 大小:25.04KB
下载 相关 举报
完整版常见SQL笔试题.docx_第1页
第1页 / 共10页
完整版常见SQL笔试题.docx_第2页
第2页 / 共10页
完整版常见SQL笔试题.docx_第3页
第3页 / 共10页
完整版常见SQL笔试题.docx_第4页
第4页 / 共10页
完整版常见SQL笔试题.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

完整版常见SQL笔试题.docx

《完整版常见SQL笔试题.docx》由会员分享,可在线阅读,更多相关《完整版常见SQL笔试题.docx(10页珍藏版)》请在冰豆网上搜索。

完整版常见SQL笔试题.docx

完整版常见SQL笔试题

SQ笔试题

1.统计查询SQL练习

数据库中表结构如下,字段分别任rg(日期),shengfu(胜负),考察groupby语句的使用:

2005-05-09胜

2005-05-09胜

2005-05-09负

2005-05-09负

2005-05-10胜

2005-05-10负

2005-05-10负如果要生成下列结果,该如何写sql语句?

胜负

2005-05-09222005-05-1012

答案:

1)selectrq,sum(casewhenshengfu='胜'then1else0end)'胜',sum(case

whenshengfu='负'

then1else0end)'负'from#tmpgroupbyrq

2)selectN.rq,N.胜,M.负from(

selectrq,胜=count(*)from#tmpwhereshengfu='胜'groupbyrq)Ninnerjoin

负'groupbyrq)Mon

(selectrq,负=count(*)from#tmpwhereshengfu='

N.rq=M.rq

3)selecta.col001,a.a1胜,b.b1负from

(selectcol001,count(col001)a1fromtemp1wherecol002='

col001)a,

(selectcol001,count(col001)b1fromtemp1wherecol002='

col001)b

wherea.col001=b.col001

2.条件判断SQL练习

表中有ABC三列,用SQL语句实现:

当A列大于B列时选择

B列,

当B列大于C列时选择B列否则选择C列

答案:

select(casewhena>bthenaelsebend),

(casewhenb>cthenbeslecend)

fromtable_name

3.日期统计SQL练习

请取出tb_send表中日期(SendTime字段)为当天的所有记录

字段为

胜'groupby

负'groupby

A列否则选择

?

(SendTime

datetime型,包含日期与时间)

答案:

select*fromtbwheredatediff(dd,SendTime,getdate())=0

4.统计查询SQL练习

有一张表,里面有3个字段:

语文,数学,英语。

其中有3条记录分别表示语文70

分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示

出来(并写出您的思路):

大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。

显示格式:

语文数学英语

及格优秀不及格

答案:

select

(casewhen语文>=80then'优秀'

when语文>=60then'及格'

else'不及格')as语文,

(casewhen数学>=80then'优秀'

when数学>=60then'及格'

else'不及格')as数学,(casewhen英语>=80then'优秀

when英语>=60then'及格

else'不及格')as英语,

fromtable

7.请用一个sql语句得出结果,从table1,table2

table3所列格式数据

table1月份mon部门dep业绩yj答案:

一月份0110一月份0210一月份035二月份028二月份049三月份038table2部门dep部门名称dname答案:

01国内业务一部02国内业务二部03国内业务三部04国际业务部table3(result)部门dep一月份二月份三月份答案:

答案:

-0110nullnull02108null03null5804nullnull9答案:

1)

selecta.部门名称dname,b.业绩yjas'一月份',c.业绩yjas'二月份',d.三月份'

中取出如

业绩yjas'

fromtable1a,table2b,table2c,table2dwherea.部门dep=b.部门depandb.月份mon='一月份'anda.部门dep=c.部门depandc.月份mon='二月份'anda.部门dep=d.部门depandd.月份mon='三月份'and2)selecta.dep,

sum(casewhenb.mon=1thenb.yjelse0end)as'sum(casewhenb.mon=2thenb.yjelse0end)as'sum(casewhenb.mon=3thenb.yjelse0end)as'sum(casewhenb.mon=4thenb.yjelse0end)as'sum(casewhenb.mon=5thenb.yjelse0end)as'sum(casewhenb.mon=6thenb.yjelse0end)as'sum(casewhenb.mon=7thenb.yjelse0end)as'sum(casewhenb.mon=8thenb.yjelse0end)as'sum(casewhenb.mon=9thenb.yjelse0end)as'sum(casewhenb.mon=10thenb.yjelse0end)assum(casewhenb.mon=11thenb.yjelse0end)assum(casewhenb.mon=12thenb.yjelse0end)asfromtable2aleftjointable1bona.dep=b.dep

8.华为一道面试题

一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。

答案:

selectid,Count(*)fromtbgroupbyidhavingcount(*)>1

select*from(selectcount(ID)ascountfromtablegroupbyID)Twhere

T.count>1

9.统计查询SQL练习

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

张三语文81

张三数学75

李四语文76

李四数学90

王五语文81

王五数学100

王五英语90

distinct

A:

selectdistinctnamefromtablewherenamenotin(selectnamefromtable

wherefenshu<=80)

10.常规删除查询SQL练习

表中数据如下:

12005001张三0001数学69

22005002李四0001数学89

32005001张三0001数学69删除除了自动编号不同,其他都相同的学生冗余信息

A:

deletetablename

where自动编号notin(selectmin(自动编

)from

tablenamegroupby学号,姓名,课程编号,课程名称,分数)

11.行列转换问题

yearmonthamount

199111.1

199121.2199131.3

199141.4199212.1

199222.2

199232.3

199242.4

查成这样一个结果

yearm1m2m3m4

19911.11.21.31.4

19922.12.22.32.4

答案一、

selectyear,

(selectamountfromaaamwheremonth=1andm.year=aaa.year)asm1,

(selectamountfromaaamwheremonth=2andm.year=aaa.year)asm2,(selectamountfromaaamwheremonth=3andm.year=aaa.year)asm3,(selectamountfromaaamwheremonth=4andm.year=aaa.year)asm4fromaaagroupbyyear

这个是ORACLE中做的:

select*from(selectname,yearb1,lead(year)over

(partitionbynameorderbyyear)b2,lead(m,2)over(partitionbynameorderbyyear)

b3,rank()over(

partitionbynameorderbyyear)rkfromt)whererk=1;

12.行列转换SQL考核

原表:

courseidcoursenamescore

1java70

2oracle90

3xml40

4jsp30

5servlet80

答案:

为了便于阅读,查询此表后的结果显式如下(及格分数为60):

courseidcoursenamescoremark

答案:

1java70pass

2oracle90pass

3xml40fail

4jsp30fail

5servlet80pass

答案:

decode

答案:

selectcourseid,coursename,score

(sign(score-60),-1,'fail','pass')asmarkfromcourse

13.SQL练习

(1)表名:

购物信息

购物人

商品名称

数量

A

2

B

4

C

1

A

2

B丙5

给出所有购入商品为两种或两种以上的购物人记录

答:

select*from购物信息where购物人in(select购物人from购物信

息groupby购物人havingcount(*)>=2);

(2)

表名:

(绩表

姓名

课程

分数

张三

语文

81

张三

数学

75

李四

语文

56

李四

数学

90

王五

语文

81

王五

数学

100

给出成绩全部合格的学生信息(包含姓名、课程、分数),注:

分数在60以上

评为合格

答:

select*from成绩表where姓名notin(selectdistinet姓名from成绩

表where分数<60)

或者:

select*from成绩表where姓名in(select姓名from成绩表groupby姓

名havingmin(分数)>=60)

(3)表名:

商品表

名称

产地

进价

苹果

烟台

2.5

苹果

云南

1.9

苹果

四川

3

西瓜

江西

1.5

西瓜

北京

2.4

给出平均进价在2元以下的商品名称

答:

select名称from商品表groupby名称havingavg(进价)<2

(4)表名:

高考信息表

准考证号

科目

成绩

2006001

语文

119

2006001

数学

108

2006002

物理

142

2006001

化学

136

2006001

物理

127

2006002

数学

149

2006002

英语

110

2006002

语文

105

2006001

英语

98

2006002

化学

129

给出高考总分在600以上的学生准考证号

答:

select准考证号from高考信息表groupby准考证号havingsum(成

绩)>600

(5)表名:

高考信息表

准考证号

数学

语文

英语

物理

化学

2006001

108

119

98

127

136

2006002

149

105

110

142

129

答:

select准考证号from高考信息表where(数学+语文+英语+物理+化学)>

600

(6)表名:

club

idgenderage

67M

19

68F

30

69F

27

70F

16

71M

32

查询出该俱乐部里男性会员和女性会员的总数

答:

selectgender,count(id)fromclubgroupbygender

(7)表名:

team

ID(number型)Name(varchar2型)

要求:

执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的

例如:

删除后的结果应如下:

ID(number型)Name(varchar2型)

请写出SQL语句。

deletefromteamwhereidnotin(selectmin(id)fromteamgroupby

name)

(8)表名:

student

namecoursescore

张青语文72

王华数学72

张华

英语

81

张青

物理

67

李立

化学

98

张燕

物理

70

张青

化学

76

查询出“张”姓学生中平均成绩大于75分的学生信息

答:

select*fromstudentwherenamein(selectnamefromstudent

wherenamelike'张%'groupbynamehavingavg(score)>75)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1