Sql常见面试题Word文档格式.docx
《Sql常见面试题Word文档格式.docx》由会员分享,可在线阅读,更多相关《Sql常见面试题Word文档格式.docx(15页珍藏版)》请在冰豆网上搜索。
where
namenotin(selectdistinctnamefromtablewherefenshu<
=80)
2.学生表如下:
自动编号
学号
姓名课程编号课程名称分数
1
2005001
张三
0001
69
2
2005002
李四
89
3
删除除了自动编号不同,其他都相同的学生冗余信息
deletefromtablenamewhere自动编号notin(selectmin(自动编号)fromtablenamegroupby学号,姓名,课程编号,课程名称,分数)
一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在四个球对进行比赛,用一条sql语句显示所有可能的比赛组合.
你先按你自己的想法做一下,看结果有我的这个简单吗?
答:
selecta.name,b.name
fromteama,teamb
wherea.name<
b.name
请用SQL语句实现:
从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。
请注意:
TestDB中有很多科目,都有1-12月份的发生额。
AccID:
科目代码,Occmonth:
发生额月份,DebitOccur:
发生额。
数据库名:
JcyAudit,数据集:
Select*fromTestDB
selecta.*
fromTestDBa
(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID='
101'
groupbyOccmonth)b
wherea.Occmonth=b.Occmonthanda.DebitOccur>
b.Debit101ccur
************************************************************************************
面试题:
怎么把这样一个表儿
year
monthamount
1991
1
1.1
2
1.2
3
1.3
4
1.4
1992
2.1
2.2
2.3
2.4
查成这样一个结果
yearm1
m2
m3
m4
19911.11.21.31.4
19922.12.22.32.4
答案一、
selectyear,
(selectamountfrom
aaamwheremonth=1
andm.year=aaa.year)asm1,
aaamwheremonth=2
andm.year=aaa.year)asm2,
aaamwheremonth=3
andm.year=aaa.year)asm3,
aaamwheremonth=4
andm.year=aaa.year)asm4
fromaaa
groupbyyear
这个是ORACLE
中做的:
select*from(selectname,yearb1,lead(year)over
(partitionbynameorderbyyear)b2,lead(m,2)over(partitionbynameorderbyyear)b3,rank()over(
partitionbynameorderbyyear)rkfromt)whererk=1;
精妙的SQL语句!
精妙SQL语句
作者:
不详发文时间:
2003.05.2910:
55:
05
说明:
复制表(只复制结构,源表名:
a新表名:
b)
SQL:
select*intobfromawhere1<
>
1
拷贝表(拷贝数据,源表名:
a目标表名:
insertintob(a,b,c)selectd,e,ffromb;
显示文章、提交人和最后回复时间
selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b
外连接查询(表名1:
a表名2:
selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c
日程安排提前五分钟提醒
select*from日程安排wheredatediff('
minute'
f开始时间,getdate())>
5
两张关联表,删除主表中已经在副表中没有的信息
deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)
--
SELECTA.NUM,A.NAME,B.UPD_DATE,B.PREV_UPD_DATE
FROMTABLE1,
(SELECTX.NUM,X.UPD_DATE,Y.UPD_DATEPREV_UPD_DATE
FROM(SELECTNUM,UPD_DATE,INBOUND_QTY,STOCK_ONHAND
FROMTABLE2
WHERETO_CHAR(UPD_DATE,'
YYYY/MM'
)=TO_CHAR(SYSDATE,'
))X,
(SELECTNUM,UPD_DATE,STOCK_ONHAND
)=
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'
)¦
¦
'
/01'
'
YYYY/MM/DD'
)-1,'
))Y,
WHEREX.NUM=Y.NUM(+)
ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)<
X.STOCK_ONHAND)B
WHEREA.NUM=B.NUM
select*fromstudentinfowherenotexists(select*fromstudentwherestudentinfo.id=student.id)and系名称='
"
&
strdepartmentname&
'
and专业名称='
strprofessionname&
orderby性别,生源地,高考总成绩
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'
yyyy'
)AStelyear,
SUM(decode(TO_CHAR(a.telfeedate,'
mm'
),'
01'
a.factration))ASJAN,
02'
a.factration))ASFRI,
03'
a.factration))ASMAR,
04'
a.factration))ASAPR,
05'
a.factration))ASMAY,
06'
a.factration))ASJUE,
07'
a.factration))ASJUL,
08'
a.factration))ASAGU,
09'
a.factration))ASSEP,
10'
a.factration))ASOCT,
11'
a.factration))ASNOV,
12'
a.factration))ASDEC
FROM(SELECTa.userper,a.tel,a.standfee,b.telfeedate,b.factration
FROMTELFEESTANDa,TELFEEb
WHEREa.tel=b.telfax)a
GROUPBYa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'
)
四表联查问题:
select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindo