1.用一条SQL语句查询出每门课都大于80分的学生姓名
namekechengfenshu
张三语文81
张三数学75
李四语文76
李四数学90
王五语文81
王五数学100
王五英语<?XML:NAMESPACE PREFIX = ST1 /><chmetcnv tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="90" unitname="a">90<br></chmetcnv>
A:selectdistinctnamefromtablewherenamenotin(selectdistinctnamefromtablewherefenshu<=80)
2.学生表如下:
自动编号学号姓名课程编号课程名称分数
12005001张三0001数学69
22005002李四0001数学89
32005001张三0001数学69
删除除了自动编号不同,其他都相同的学生冗余信息
A:deletetablenamewhere自动编号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
************************************************************************************
面试题:怎么把这样一个表儿
yearmonthamount
199111.1
199121.2
199131.3
199141.4
199212.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)asm4
fromaaagroupbyyear
这个是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目标表名:b)
SQL:insertintob(a,b,c)selectd,e,ffromb;
说明:显示文章、提交人和最后回复时间
SQL:selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b
说明:外连接查询(表名1:a表名2:b)
SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c
说明:日程安排提前五分钟提醒
SQL:select*from日程安排wheredatediff('minute',f开始时间,getdate())>5
说明:两张关联表,删除主表中已经在副表中没有的信息
SQL:
deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)
说明:--
SQL:
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,'YYYY/MM'))X,
(SELECTNUM,UPD_DATE,STOCK_ONHAND
FROMTABLE2
WHERETO_CHAR(UPD_DATE,'YYYY/MM')=
TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'YYYY/MM')¦¦'/01','YYYY/MM/DD')-1,'YYYY/MM'))Y,
WHEREX.NUM=Y.NUM(+)
ANDX.INBOUND_QTY+NVL(Y.STOCK_ONHAND,0)<>X.STOCK_ONHAND)B
WHEREA.NUM=B.NUM
说明:--
SQL:
select*fromstudentinfowherenotexists(select*fromstudentwherestudentinfo.id=student.id)and系名称='"&strdepartmentname&"'and专业名称='"&strprofessionname&"'orderby性别,生源地,高考总成绩
说明:
从数据库中去一年的各单位电话费统计(电话费定额贺电化肥清单两个表来源)
SQL:
SELECTa.userper,a.tel,a.standfee,TO_CHAR(a.telfeedate,'yyyy')AStelyear,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'01',a.factration))ASJAN,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'02',a.factration))ASFRI,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'03',a.factration))ASMAR,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'04',a.factration))ASAPR,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'05',a.factration))ASMAY,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'06',a.factration))ASJUE,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'07',a.factration))ASJUL,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'08',a.factration))ASAGU,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'09',a.factration))ASSEP,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'10',a.factration))ASOCT,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'11',a.factration))ASNOV,
SUM(decode(TO_CHAR(a.telfeedate,'mm'),'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,'yyyy')
说明:四表联查问题:
SQL:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....
说明:得到表中最小的未使用的ID号
SQL:
SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1)THENMIN(HandleID)+1ELSE1END)asHandleID
FROMHandle
WHERENOTHandleIDIN(SELECTa.HandleID-1FROMHandlea)
*******************************************************************************
有两个表A和B,均有key和value两个字段,如果B的key在A中也有,就把B的value换为A中对应的value
这道题的SQL语句怎么写?