SQLServer技术题面试题徐武峰

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

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

SQL1:selectdistinctnamefromtablewherenamein(selectdistinctnamefromtablewherefenshu>80)

SQL2:selectnamefromtablegroupbynamehavingmin(fenshu)>80

2.学生表如下:自动编号学号姓名课程编号课程名称分数12005001张三0001数学6922005002李四0001数学8932005001张三0001数学69

删除除了自动编号不同,其他都相同的学生冗余信息

SQL:deletetablenamewhere自动编号notin(selectmin(自动编号)fromtablenamegroupby学号,姓名,课程编号,课程名称,分数)

3.请用SQL语句实现:从TestDB数据表中查询出所有月份的发生额都比101科目相应月份的发生额高的科目。请注意:TestDB中有很多科目,都有1-12月份的发生额。AccID:科目代码,Occmonth:发生额月份,DebitOccur:发生额。数据库名:JcyAudit,数据集:Select*fromTestDB

SQL:selecta.*fromTestDBa,(selectOccmonth,max(DebitOccur)Debit101ccurfromTestDBwhereAccID='101'groupbyOccmonth)bwherea.Occmonth=b.Occmonthanda.DebitOccur>b.Debit101ccur

4.怎么把这样一个表yearmonthamount199111.1199121.2199131.3199141.4199212.1199222.2199232.3199242.4查成这样一个结果yearm1m2m3m419911.11.21.31.419922.12.22.32.4

SQL: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

5.复制表(只复制结构,源表名:a新表名:b)

SQL:select*intobfromawhere1<>1

6.拷贝表(拷贝数据,源表名:a目标表名:b)

SQL:insertintob(a,b,c)selectd,e,ffromb;

SQL:selecta.title,a.username,b.adddatefromtablea,(selectmax(adddate)adddatefromtablewheretable.title=a.title)b

8.外连接查询(表名1:a表名2:b)

SQL:selecta.a,a.b,a.c,b.c,b.d,b.ffromaLEFTOUTJOINbONa.a=b.c

9.日程安排提前五分钟提醒

10.两张关联表,删除主表中已经在副表中没有的信息

SQL:deletefrominfowherenotexists(select*frominfobzwhereinfo.infid=infobz.infid)

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')

12.四表联查问题:

SQL:select*fromaleftinnerjoinbona.a=b.brightinnerjoincona.a=c.cinnerjoindona.a=d.dwhere.....

13.得到表中最小的未使用的ID号

SELECT(CASEWHENEXISTS(SELECT*FROMHandlebWHEREb.HandleID=1)THENMIN(HandleID)+1ELSE1END)asHandleID

FROMHandle

WHERENOTHandleIDIN(SELECTa.HandleID-1FROMHandlea)

14.表数据如下IDstuidstatus11001320014234315523642573331想得到下面结果stuid总数100,200,2343,3334

SQL:

SELECTstuff(Select','+convert(nvarchar(100),stuid)fromtableawherestatus=1orderbystuidFORXMLPATH('')),1,1,'')

ASstuid,count(*)as总数fromtableaasawherestatus=1

15.原表:courseidcoursenamescore-------------------------------------1java702oracle903xml404jsp305servlet80-------------------------------------为了便于阅读,查询此表后的结果显式如下(及格分数为60):courseidcoursenamescoremark---------------------------------------------------1java70pass2oracle90pass3xml40fail4jsp30fail5servlet80pass---------------------------------------------------写出此查询语句。

selectcourseid,coursename,score,

'mark'=CASEWHENscore>=60THEN'pass'WHENscore<60THEN'fail'

ENDfromtablea

16.原表:idproidproname11M12F21N22G31B32A

查询后的表:idpro1pro21MF2NG3BA

selectdistinctid,

(selectpronamefromtableaawhereproid=1anda.id=tablea.id)aspro1,

(selectpronamefromtableaawhereproid=2anda.id=tablea.id)aspro2

fromtablea

17.原表a:a1a21a1b2x2y2z查询后的表:ida31ab2xyzSQL用FORXMLPATH()实现

selectdistinct(select''+a2fromawherea1=1FORXMLPATH(''))as'1',(select''+a2fromawherea1=2FORXMLPATH(''))as'2'froma

18.行转列

姓名课程分数

-------------------------------

张三语文74

张三数学83

张三物理93

李四语文74

李四数学84

李四物理94

变成

姓名语文数学物理

-------------------------------------------

李四748494

张三748393

SQL1:

select姓名,

max(case课程when'语文'then分数else0end)语文,

max(case课程when'数学'then分数else0end)数学,

max(case课程when'物理'then分数else0end)物理

fromtb

groupby姓名

SQL2:select*fromtbpivot(max(分数)for课程in(语文,数学,物理))a

19.行转列结果加上总分、平均分

姓名语文数学物理总分平均分

------------------------------------------------------

李四74849425284.00

张三74839325083.33

max(case课程when'物理'then分数else0end)物理,

sum(分数)总分,

cast(avg(分数*1.0)asdecimal(18,2))平均分

20.列转行

-------------------------

select*from

(

select姓名,课程='语文',分数=语文fromtb

unionall

select姓名,课程='数学',分数=数学fromtb

select姓名,课程='物理',分数=物理fromtb

)t

orderby姓名,case课程when'语文'then1when'数学'then2when'物理'then3end

21.获取不同name的最小的year和最小的month的其中的id字段

yearmonthidname2014101a201492a2013123a201314a201325a2014106b201597b2012128b201219b2012210b20141011b20151112b20131213c2013114c2013215c

结果:

yearmonthidname201314a201219b2013114c

select*from(select*,row_number()over(partitionbynameorderbyyears)asnfromtablesa)twheret.n=1

22.如图,如何将表A和表B合并成表C。记得sql有一个关键字可以实现,可怎么就是想不起来了。(不使用ISNULL()来设定固定值)

selectb.Cate_no,a.Size_no,a.Size_name,isnull(c.Qty,0)'Qty'from(selectdistinctCate_nofrom表B)bcrossjoin表Aaleftjoin表Bconb.Cate_no=c.Cate_noanda.Size_no=c.Size_no

23.题为:有两个表,t1,t2,Tablet1:

SELLER|NON_SELLER----------

ABACADBABCBDCACBCDDADBDC

Tablet2:

SELLER|COUPON|BAL-----------------------A9100B9200C9300D9400A9.5100B9.520A1080

要求用SELECT语句列出如下结果:

------如A的SUM(BAL)为B,C,D的和,B的SUM(BAL)为A,C,D的和.......且用的方法不要增加数据库负担,如用临时表等.

NON-SELLER|COUPON|SUM(BAL)---------------A9900B9800C9700D9600A9.520B9.5100C9.5120D9.5120A100B1080C1080D1080

SQL:未找到

***********************************************************************************

24.问题:

一百个账户各有100$,某个账户某天如有支出则添加一条新记录,记录其余额。一百天后,请输出每天所有账户的余额信息

这个问题的难点在于每个用户在某天可能有多条纪录,也可能一条纪录也没有(不包括第一天)

返回的记录集是一个100天*100个用户的纪录集

思路:

1.创建表并插入测试数据:我们要求username从1-100CREATETABLE[dbo].[TABLE2]([username][varchar](50)NOTNULL,--用户名[outdate][datetime]NOTNULL,--日期[cash][float]NOTNULL--余额)ON[PRIMARY

declare@iintset@i=1while@i<=100begininserttable2values(convert(varchar(50),@i),'2001-10-1',100)inserttable2values(convert(varchar(50),@i),'2001-11-1',50)set@i=@i+1endinserttable2values(convert(varchar(50),@i),'2001-10-1',90)

select*fromtable2orderbyoutdate,convert(int,username)

2.组合查询语句:a.我们必须返回一个从第一天开始到100天的纪录集:如:2001-10-1(这个日期是任意的)到2002-1-8由于第一天是任意一天,所以我们需要下面的SQL语句:selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username)这里的奥妙在于:convert(int,username)-1(记得我们指定用户名从1-100:-))groupbyusername,min(outdate):第一天就可能每个用户有多个纪录。返回的结果:outdate------------------------------------------------------2001-10-0100:00:00.000.........2002-01-0800:00:00.000

b.返回一个所有用户名的纪录集:selectdistinctusernamefromtable2返回结果:username--------------------------------------------------110100......99

c.返回一个100天记录集和100个用户记录集的笛卡尔集合:select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username)

)asACROSSjoin(selectdistinctusernamefromtable2)asBorderbyoutdate,convert(int,username)返回结果100*100条纪录:outdateusername2001-10-0100:00:00.0001......2002-01-0800:00:00.000100

d.返回当前所有用户在数据库的有的纪录:selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,username

orderbyoutdate,convert(int,username)返回纪录:outdateusernamecash2001-10-0100:00:00.000190......2002-01-0800:00:00.00010050

e.将c中返回的笛卡尔集和d中返回的纪录做leftjoin:selectC.outdate,C.username,D.cashfrom(select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username))asACROSSjoin(selectdistinctusernamefromtable2)asB)asCleftjoin(selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,username)asDon(C.username=D.usernameanddatediff(d,C.outdate,D.outdate)=0)

orderbyC.outdate,convert(int,C.username)注意:用户在当天如果没有纪录,cash字段返回NULL,否则cash返回每个用户当天的余额outdateusernamecash2001-10-0100:00:00.0001902001-10-0100:00:00.0002100......2001-10-0200:00:00.000190

2001-10-0200:00:00.0002NULL<--注意这里......

2002-01-0800:00:00.00010050

f.好了,现在我们最后要做的就是,如果cash为NULL,我们要返回小于当前纪录日期的第一个用户余额(由于我们使用orderbycash,所以返回top1纪录即可,使用min应该也可以),这个余额即为当前的余额:caseisnull(D.cash,0)when0then(selecttop1cashfromtable2wheretable2.username=C.usernameanddatediff(d,C.outdate,table2.outdate)<0orderbytable2.cash)elseD.cashendascash

g.最后组合的完整语句就是selectC.outdate,C.username,caseisnull(D.cash,0)when0then(selecttop1cashfromtable2wheretable2.username=C.usernameanddatediff(d,C.outdate,table2.outdate)<0orderbytable2.cash)elseD.cashendascashfrom(select*from(selecttop100dateadd(d,convert(int,username)-1,min(outdate))asoutdatefromtable2groupbyusernameorderbyconvert(int,username))asACROSSjoin(selectdistinctusernamefromtable2)asB)asCleftjoin(selectoutdate,username,min(cash)ascashfromtable2groupbyoutdate,username)asDon(C.username=D.usernameanddatediff(d,C.outdate,D.outdate)=0)

orderbyC.outdate,convert(int,C.username)

返回结果:outdateusernamecash2001-10-0100:00:00.0001902001-10-0100:00:00.0002100......2002-01-0800:00:00.00010050

25.取出sql表中第31到40的记录(以自动增长ID为主键)

SQL1:selecttop10*fromtwhereidnotin(selecttop30idfromtorderbyid)ordebyid

SQL2:selecttop10*fromtwhereidin(selecttop40idfromtorderbyid)orderbyiddesc

26.有表a存储二叉树的节点,要用一条sql语句查出所有节点及节点所在的层.表ac1c2A----------1--------/\ABBC--------2AC//\BDDNE------3CE/\\DFFKI---4EIDKCN

所要得到的结果如下

jdcs---------A1B2C2D3N3E3F4K4I4有高手指导一下,我只能用pl/sql写出来,请教用一条sql语句的写法

SQL:selectc2,level+1lv

fromteststart

withc1='A'connectbyc1=priorc2

union

select'A',1fromdual

orderbylv;

C2LV------------A1B2C2D3E3N3F4I4K4

已选择9行。

27.表内容: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

SQL1:selectrq,sum(casewhenshengfu='胜'then1else0end)'胜',sum(casewhenshengfu='负'then1else0end)'负'from#tmpgroupbyrq

SQL2:selectN.rq,N.勝,M.負from(selectrq,勝=count(*)from#tmpwhereshengfu='胜'groupbyrq)Ninnerjoin(selectrq,負=count(*)from#tmpwhereshengfu='负'groupbyrq)MonN.rq=M.rq

SQL3:selecta.col001,a.a1胜,b.b1负from(selectcol001,count(col001)a1fromtemp1wherecol002='胜'groupbycol001)a,(selectcol001,count(col001)b1fromtemp1wherecol002='负'groupbycol001)bwherea.col001=b.col001

28.表中有ABC三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。

SQL:select(casewhena>bthenaelsebend),(casewhenb>cthenbeslecend)fromtable_name

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

30.一张表,里面有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

31.在sqlserver2000中请用sql创建一张用户临时表和系统临时表,里面包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别

用户临时表:createtable#xx(IDint,IDValuesint)系统临时表:createtable##xx(IDint,IDValuesint)

区别:用户临时表只对创建这个表的用户的Session可见,对其他进程是不可见的.当创建它的进程消失时这个临时表就自动删除.

全局临时表对整个SQLServer实例都可见,但是所有访问它的Session都消失的时候,它也自动删除

32.Sqlserver2000是一种大型数据库,他的存储容量只受存储介质的限制,请问它是通过什么方式实现这种无限容量机制的。

它的所有数据都存储在数据文件中(*.dbf),所以只要文件够大,SQLServer的存储容量是可以扩大的.

SQLServer2000数据库有三种类型的文件:

主要数据文件主要数据文件是数据库的起点,指向数据库中文件的其它部分。每个数据库都有一个主要数据文件。主要数据文件的推荐文件扩展名是.mdf。

次要数据文件次要数据文件包含除主要数据文件外的所有数据文件。有些数据库可能没有次要数据文件,而有些数据库则有多个次要数据文件。次要数据文件的推荐文件扩展名是.ndf。

日志文件日志文件包含恢复数据库所需的所有日志信息。每个数据库必须至少有一个日志文件,但可以不止一个。日志文件的推荐文件扩展名是.ldf。

33.从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大家请教。如使用存储过程也可以。

table1

月份mon部门dep业绩yj-------------------------------一月份0110一月份0210一月份035二月份028二月份049三月份038

table2

部门dep部门名称dname--------------------------------01国内业务一部02国内业务二部03国内业务三部04国际业务部

table3(result)

部门dep一月份二月份三月份--------------------------------------0110nullnull02108null03null5804nullnull9

SQL1: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='三月份'and

SQL2: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)as'十月份',sum(casewhenb.mon=11thenb.yjelse0end)as'十一月份',sum(casewhenb.mon=12thenb.yjelse0end)as'十二月份',fromtable2aleftjointable1bona.dep=b.dep

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

selectid,Count(*)fromtbgroupbyidhavingcount(*)>1select*from(selectcount(ID)ascountfromtablegroupbyID)TwhereT.count>1

35.drop,delete,truncate区别drop隐式提交,不能回滚,删除表结构及所有从数据,将表所占空间全部释放。删除表的结构所依赖的约束,触发器,索引,依赖于该表的存储过程/函数将保留,但是变为invalid状态。delete逐行删除,并且同时将该行的的删除操作记录在redo和undo表空间中以便进行回滚(rollback)和重做操作。truncate删除所有数据,TRUNCATE不记录日志,表结构及其列、约束、索引等保持不变。

36.select1,count(1)两个用法?select1fromtable增加临时列,每行的列值是写在select后的数,这条sql语句中是1count(1)表的行数

37.exists介绍1.子查询与外表的字段有关系时select字段1,字段2from表1whereexists(select字段1,字段2from表2where表2.字段2=表1.字段2)这时候,此SQL语句相当于一个关联查询。它先执行表1的查询,然后把表1中的每一条记录放到表2的条件中去查询,如果存在,则显示此条记录2.子查询与外表的字段没有任何关联Select字段1,字段2from表1whereexists(select*from表2where表2.字段=‘条件‘)在这种情况下,只要子查询的条件成立,就会查询出表1中的所有记录,反之,如果子查询中没有查询到记录,则表1不会查询出任何的记录。当子查询与主表不存在关联关系时,简单认为只要exists为一个条件判断,如果为true,就输出所有记录。如果为false则不输出任何的记录。

38.exists与in区别?in是在内存里遍历比较,而exists需要查询数据库,所以当B表数据量较大时,exists效率优于in。exists()会执行A.length次,它并不缓存exists()结果集,因为exists()结果集的内容并不重要,重要的是其内查询语句的结果集空或者非空,空则返回false,非空则返回true。外表大,用IN;内表大,用EXISTSnotin和notexists如果查询语句使用了notin那么内外表都进行全表扫描,没有用到索引;而notextsts的子查询依然能用到表上的索引。所以无论那个表大,用notexists都比notin要快。

39.on与where区别?on条件是在生成临时表时使用的条件where条件是在临时表生成好后,再对临时表进行过滤的条件on后的条件用来生成左右表关联的临时表,where后的条件对临时表中的记录进行过滤。

41.优化修改删除语句如果你同时修改或删除过多数据,会造成cpu利用率过高从而影响别人对数据库的访问。

42.根据如下三张表查询

S(SNO,SNAME)学生关系。SNO为学号,SNAME为姓名C(CNO,CNAME,CTEACHER)课程关系。CNO为课程号,CNAME为课程名,CTEACHER为任课教师SC(SNO,CNO,SCGRADE)选课关系。SCGRADE为成绩

1).找出没有选修过“李明”老师讲授课程的所有学生姓名

SelectSNAMEFROMSWhereNOTEXISTS(Select*FROMSC,CWhereSC.CNO=C.CNOANDCNAME='李明'ANDSC.SNO=S.SNO)

2).列出有二门以上(含两门)不及格课程的学生姓名及其平均成绩

SelectS.SNO,S.SNAME,AVG_SCGRADE=AVG(SC.SCGRADE)FROMS,SC,(SelectSNOFROMSCWhereSCGRADE<60GROUPBYSNOHAVINGCOUNT(DISTINCTCNO)>=2)AWhereS.SNO=A.SNOANDSC.SNO=A.SNOGROUPBYS.SNO,S.SNAME

3).列出既学过“1”号课程,又学过“2”号课程的所有学生姓名

SelectS.SNO,S.SNAMEFROMS,(SelectSC.SNOFROMSC,CWhereSC.CNO=C.CNOANDC.CNAMEIN('1','2')GROUPBYSNOHAVINGCOUNT(DISTINCTCNO)=2)SCWhereS.SNO=SC.SNO

4).列出“1”号课成绩比“2”号同学该门课成绩高的所有学生的学号

SelectS.SNO,S.SNAMEFROMS,(SelectSC1.SNOFROMSCSC1,CC1,SCSC2,CC2WhereSC1.CNO=C1.CNOANDC1.NAME='1'ANDSC2.CNO=C2.CNOANDC2.NAME='2'ANDSC1.SCGRADE>SC2.SCGRADE)SCWhereS.SNO=SC.SNO

5).列出“1”号课成绩比“2”号课成绩高的所有学生的学号及其“1”号课和“2”号课的成绩

SelectS.SNO,S.SNAME,SC.[1号课成绩],SC.[2号课成绩]FROMS,(SelectSC1.SNO,[1号课成绩]=SC1.SCGRADE,[2号课成绩]=SC2.SCGRADEFROMSCSC1,CC1,SCSC2,CC2WhereSC1.CNO=C1.CNOANDC1.NAME='1'ANDSC2.CNO=C2.CNOANDC2.NAME='2'ANDSC1.SCGRADE>SC2.SCGRADE)SCWhereS.SNO=SC.SNO

6).求其中同一个号码的两次通话之间间隔大于10秒的通话记录ID

selectsum(销售金额),datename(week,销售日期-1)fromsaleswhere销售日期betweebegindateandenddategroupbydatename(week,销售日期-1)

8).使用标准SQL嵌套语句查询选修课程名称为’税收基础’的学员学号和姓名

selects#,snfromswhereS#in(selectS#fromc,scwherec.c#=sc.c#andcn=’税收基础’)

9).使用标准SQL嵌套语句查询选修课程编号为’C2’的学员姓名和所属单位

selectsn,sdfroms,scwheres.s#=sc.s#andsc.c#=’c2’

10).使用标准SQL嵌套语句查询不选修课程编号为’C5’的学员姓名和所属单位

selectsn,sdfromswheres#notin(selects#fromscwherec#=’c5’)

11).查询选修了课程的学员人数

select学员人数=count(distincts#)fromsc

12).查询选修课程超过5门的学员学号和所属单位

selectsn,sdfromswheres#in(selects#fromscgroupbys#havingcount(distinctc#)>5)

13).查询A(ID,Name)表中第31至40条记录,ID作为主键可能是不是连续增长的列

selecttop10*fromAwhereID>(selectmax(ID)from(selecttop30IDfromAorderbyA)T)orderbyA

14).查询表A中存在ID重复三次以上的记录

SELECT*fromAWHEREIDin(selectIDfromAgroupbyIDhavingCOUNT(ID)>3)

43.testtable1和testtable2表联合查询testtable1:iddepartment1设计2市场3售后

testtable2:iddptIDname11张三21李四32王五43彭六54陈七

iddptIDdepartmentname11设计张三21设计李四32市场王五43售后彭六54黑人陈七

SELECTtesttable2.*,ISNULL(department,'黑人')FROMtesttable1rightjointesttable2ontesttable2.dptID=testtable1.ID

44.有表A,结构如下:A:p_IDp_Nums_id11001112022801311013803其中:p_ID为产品ID,p_Num为产品库存量,s_id为仓库ID。请用SQL语句实现将上表中的数据合并,合并后的数据为:p_IDs1_ids2_ids3_id110120280031108其中:s1_id为仓库1的库存量,s2_id为仓库2的库存量,s3_id为仓库3的库存量。如果该产品在某仓库中无库存量,那么就是0代替。

selectp_id,sum(casewhens_id=1thenp_numelse0end)ass1_id,sum(casewhens_id=2thenp_numelse0end)ass2_id,sum(casewhens_id=3thenp_numelse0end)ass3_idfrommyProgroupbyp_id

1.在cpxs数据库的产品表中增加”产品简介“列,之后在删除该列。

ALTERTABLE[dbo].[product]ADD[产品简介]textALTERTABLE[dbo].[product]DROPCOLUMN[产品简介]2.将产品数据库的产品表中每种商品的价格打8UPDATE[dbo].[product]SET[价格]=[价格]*0.83.将产品数据库的产品表中价格打8折后低于50元的商品删除DELETE[dbo].[product]WHERE[价格]<504.查找价格在2000~2900元之间的商品名。SELECT[产品名称]FROM[dbo].[product]WHERE[价格]BETWEEN2000AND29005.计算所有商品的总价格。

SELECTSUM([价格]*[库存量])FROM[dbo].[product]6.在产品销售数据库上创建电冰箱产品表的视图bxcp。

CREATEVIEW[dbo].[bxcp]ASSELECTdbo.product.*FROMdbo.productWHERE[产品名称]='电冰箱'7.在bxcp视图中查询库存量在100台以下的产品编号。SELECT*FROM[dbo].[bxcp]WHERE[库存量]<1008.使用EXISTS关键字引入的子查询与使用IN关键字引入的子查询在语法上有哪些不同?//EXISTS方式SELECT*FROMAWHEREEXISTS(SELECT*FROMBWHEREB.id=A.uid);//in方式SELECT*FROMAWHEREidIN(SELECTidFROMB);46.删除姓名、年龄重复的记录Idnameagesalary

1yzk801000

2yzk802000

3tom2020000

4tom2020000

5im2020000

//取得不重复的数据

select*fromPersonswhereIdin(SELECTMAX(Id)ASExpr1FROMPersonsGROUPBYName,Age)

根据姓名、年龄分组,取出每组的Id最大值,然后将Id最大值之外的排除。

删除重复的数据:

deletefromPersonswhereIdnotin(SELECTMAX(Id)ASExpr1FROMPersonsGROUPBYName,Age)

题目:

条件查询:

1、在GRADE表中查找80-90份的学生学号和分数

select学号,分数fromgradewhere分数between80and90

2、在GRADE表中查找课程编号为003学生的平均分

selectavg(分数)fromgradewhere课程编号='003'

3、在GRADE表中查询学习各门课程的人数

select课程编号,count(学号)as人数fromgradegroupby课程编号

4、查询所有姓张的学生的学号和姓名

select姓名,学号fromstudent_infowhere姓名like'张%'

嵌套查询:

1、查询和学号’0001’的这位同学性别相同的所有同学的姓名和出生年月

select姓名,出生年月fromstudent_infowhere性别in(select性别fromstudent_infowheresno='0001')

2、查询所有选修课程编号为0002和0003的学生的学号、姓名和性别

select学号,姓名,性别fromstudent_infowhere学号in(select学号fromgradewhere课程编号='0002'and学号in(select学号fromgradewhere课程编号='0001'))

3、查询出学号为0001的学生的分数比0002号学生最低分高的课程编号的课程编号和分数

select课程编号,分数fromgradewhere学号='0001'and分数>(selectmin(分数)fromgradewhere学号='0002')

多表查询:

1、查询分数在80-90分的学生的学号、姓名、分数

selectstudent_info.学号,student_info.姓名,grade.分数fromstudent_info,gradewheregrade.分数between80and90

2、查询学习了’C语言’课程的学生学号、姓名和分数

selectstudent_info.学号,student_info.姓名,grade.成绩fromstudent_info,grade,curriculumwherestudent_info.学号=grade.学号andgrade.课程号=curriculum.课程号andcurriculum.课程名='C语言'

3、查询所有学生的总成绩,要求列出学号、姓名、总成绩,没有选课的学生总成绩为空。

selectgrade.学号,student_info.姓名,sum(grade.成绩)as总成绩fromstudent_info,gradewheregrade.学号=student_info.学号groupbygrade.学号,student_info.姓名

48.本题用到下面三个关系表:

CARD借书卡:(CNO卡号,NAME姓名,CLASS班级)

BOOKS图书:(BNO书号,BNAME书名,AUTHOR作者,PRICE单价,QUANTITY库存册数)

BORROW借书记录:(CNO借书卡号,BNO书号,RDATE还书日期

备注:限定每人每种书只能借一本;库存册数随借书、还书而改变。

1、要求实现如下处理:

写出自定义函数,要求输入借书卡号能得到该卡号所借书金额的总和:

CREATEFUNCTIONgetSUM

@CNOint

)

RETURNSint

AS

BEGIN

declare@sumint

select@sum=sum(price)fromBOOKSwherebnoin(selectbnofromBORROWwherecno=@CNO)

return@sum

END

GO

2、找出借书超过5本的读者,输出借书卡号及所借图书册数。

selectCNO,count(BNO)as借书数量fromBORROWgroupbyCNOhavingcount(BNO)>3

3、查询借阅了"水浒"一书的读者,输出姓名及班级。

selectname,classfromcardwherecnoin(selectcnofromborrowwherebnoin(selectbnofromBOOKSwherebname='水浒'))

4、查询过期未还图书,输出借阅者(卡号)、书号及还书日期。

selectCNO,BNO,RDATEfromborrowwheregetdate()>RDATE

5、查询书名包括"网络"关键词的图书,输出书号、书名、作者。

selectbno,bname,authorfrombookswherebnamelike'网络%'

6、查询现有图书中价格最高的图书,输出书名及作者。

selectbname,authorfrombookswherepricein(selectmax(price)frombooks)

7、查询当前借了"计算方法"但没有借"计算方法习题集"的读者,输出其借书卡号,并按卡号降序排序输出。

selectcnofromborrowwherebnoin(selectbnofrombookswherebname='计算方法')andcnonotin(selectcnofromborrowwherebnoin(selectbnofrombookswherebname='计算方法习题集'))orderbycnodesc

SELECTa.CNO

FROMBORROWa,BOOKSb

WHEREa.BNO=b.BNOANDb.BNAME=N'计算方法'

ANDNOTEXISTS(

SELECT*FROMBORROWaa,BOOKSbb

WHEREaa.BNO=bb.BNO

ANDbb.BNAME=N'计算方法习题集'

ANDaa.CNO=a.CNO)

ORDERBYa.CNODESC

8、将"C01"班同学所借图书的还期都延长一周。

updateborrowsetrdate=dateadd(day,7,rdate)fromBORROWwherecnoin(selectcnofromcardwhereclass='一班')

9、从BOOKS表中删除当前无人借阅的图书记录。

DELETEAFROMBOOKSa

WHERENOTEXISTS(

SELECT*FROMBORROW

WHEREBNO=a.BNO)

10、如果经常按书名查询图书信息,请建立合适的索引。

CREATECLUSTEREDINDEXIDX_BOOKS_BNAMEONBOOKS(BNAME)

11、在BORROW表上建立一个触发器,完成如下功能:如果读者借阅的书名是"数据库技术及应用",就将该读者的借阅记录保存在BORROW_SAVE表中(注ORROW_SAVE表结构同BORROW表)

CREATETRIGGERTR_SAVEONBORROW

FORINSERT,UPDATE

IF@@ROWCOUNT>0

INSERTBORROW_SAVESELECTi.*

FROMINSERTEDi,BOOKSb

WHEREi.BNO=b.BNO

ANDb.BNAME=N'数据库技术及应用'

12、建立一个视图,显示"力01"班学生的借书信息(只要求显示姓名和书名)。

CREATEVIEWV_VIEW

selectname,bname

frombooks,card,borrow

whereborrow.cno=card.cnoandborrow.bno=books.bnoandclass='一班'

13、查询当前同时借有"计算方法"和"组合数学"两本书的读者,输出其借书卡号,并按卡号升序排序输出。

selecta.cnofromborrowa,borrowb

wherea.cno=b.cnoand

a.bnoin(selectbnofrombookswherebname='计算方法')and

b.bnoin(selectbnofrombookswherebname='组合数学')

orderbya.cnoasc

WHEREa.BNO=b.BNO

ANDb.BNAMEIN('计算方法','组合数学')

GROUPBYa.CNO

HAVINGCOUNT(*)=2

ORDERBYa.CNOasc

14、用事务实现如下功能:一个借书卡号借走某书号的书,则该书的库存量减少1,当某书的库存量不够1本的时候,该卡号不能借该书

alterPROCEDUREpro_jieshu

@cnoint,

@bnoint,

@datedatetime

begintran

declare@quantityint

select@quantity=quantityfrombookswherebno=@bno

insertintoborrowvalues(@cno,@bno,@date)

updatebookssetquantity=@quantity-1wherebno=@bno

if(@quantity>0)

begin

committran

end

else

print'已无库存'

rollback

Student(S#,Sname,Sage,Ssex)学生表

Course(C#,Cname,T#)课程表

SC(S#,C#,score)成绩表

Teacher(T#,Tname)教师表

1)查询“001”课程比“002”课程成绩高的所有学生的学号;

selecta.S#from(selects#,scorefromSCwhereC#='001')a,(selects#,score

fromSCwhereC#='002')b

wherea.score>b.scoreanda.s#=b.s#;

2)查询平均成绩大于60分的同学的学号和平均成绩;

selectS#,avg(score)fromscgroupbyS#havingavg(score)>60;

3)查询所有同学的学号、姓名、选课数、总成绩;

selectStudent.S#,Student.Sname,count(SC.C#),sum(score)fromStudentleftOuterjoinSConStudent.S#=SC.S#groupbyStudent.S#,Sname

4)查询姓“李”的老师的个数;

selectcount(distinct(Tname))fromTeacherwhereTnamelike'李%';

5)查询没学过“叶平”老师课的同学的学号、姓名;

selectStudent.S#,Student.SnamefromStudent

whereS#notin(selectdistinct(SC.S#)fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='叶平');

6)查询学过“001”并且也学过编号“002”课程的同学的学号、姓名;

selectStudent.S#,Student.SnamefromStudent,SCwhereStudent.S#=SC.S#andSC.C#='001'andexists(Select*fromSCasSC_2whereSC_2.S#=SC.S#andSC_2.C#='002');

7)查询学过“叶平”老师所教的所有课的同学的学号、姓名;

selectS#,SnamefromStudentwhereS#in(selectS#fromSC,Course,TeacherwhereSC.C#=Course.C#andTeacher.T#=Course.T#andTeacher.Tname='叶平'

groupbyS#havingcount(SC.C#)=(selectcount(C#)fromCourse,TeacherwhereTeacher.T#=Course.T#andTname='叶平'));

8)查询课程编号“002”的成绩比课程编号“001”课程低的所有同学的学号、姓名;

SelectS#,Snamefrom(selectStudent.S#,Student.Sname,score,(selectscorefromSCSC_2whereSC_2.S#=Student.S#andSC_2.C#='002')score2

fromStudent,SCwhereStudent.S#=SC.S#andC#='001')S_2wherescore2

9)查询所有课程成绩小于60分的同学的学号、姓名;

selectS#,SnamefromStudentwhereS#notin(selectStudent.S#fromStudent,SCwhereS.S#=SC.S#andscore>60);

10)查询没有学全所有课的同学的学号、姓名;

selectStudent.S#,Student.SnamefromStudent,SC

whereStudent.S#=SC.S#groupbyStudent.S#,Student.Snamehavingcount(C#)<(selectcount(C#)fromCourse);

11)查询至少有一门课与学号为“1001”的同学所学相同的同学的学号和姓名;

selectS#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#inselectC#fromSCwhereS#='1001';

12)查询至少学过学号为“001”同学所有一门课的其他同学学号和姓名;

selectdistinctSC.S#,SnamefromStudent,SCwhereStudent.S#=SC.S#andC#in(selectC#fromSCwhereS#='001');

13)把“SC”表中“叶平”老师教的课的成绩都更改为此课程的平均成绩;

updateSCsetscore=(selectavg(SC_2.score)fromSCSC_2whereSC_2.C#=SC.C#)fromCourse,TeacherwhereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTeacher.Tname='叶平');

14)查询和“1002”号的同学学习的课程完全相同的其他同学学号和姓名;

selectS#fromSCwhereC#in(selectC#fromSCwhereS#='1002')

groupbyS#havingcount(*)=(selectcount(*)fromSCwhereS#='1002');

15)删除学习“叶平”老师课的SC表记录;

DeleteSCfromcourse,Teacher

whereCourse.C#=SC.C#andCourse.T#=Teacher.T#andTname='叶平';

16)向SC表中插入一些记录,这些记录要求符合以下条件:没有上过编号“003”课程的同学学号、2、号课的平均成绩;

InsertSCselectS#,'002',(Selectavg(score)

fromSCwhereC#='002')fromStudentwhereS#notin(SelectS#fromSCwhereC#='002');

17)按平均成绩从高到低显示所有学生的“数据库”、“企业管理”、“英语”三门的课程成绩,按如下形式显示:学生ID,,数据库,企业管理,英语,有效课程数,有效平均分

SELECTS#as学生ID

,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='004')AS数据库

,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='001')AS企业管理

,(SELECTscoreFROMSCWHERESC.S#=t.S#ANDC#='006')AS英语

,COUNT(*)AS有效课程数,AVG(t.score)AS平均成绩

FROMSCASt

GROUPBYS#

ORDERBYavg(t.score)

18)查询各科成绩最高和最低的分:以如下形式显示:课程ID,最高分,最低分

SELECTL.C#As课程ID,L.scoreAS最高分,R.scoreAS最低分

FROMSCL,SCASR

WHEREL.C#=R.C#and

L.score=(SELECTMAX(IL.score)

FROMSCASIL,StudentASIM

WHEREL.C#=IL.C#andIM.S#=IL.S#

GROUPBYIL.C#)

AND

R.Score=(SELECTMIN(IR.score)

FROMSCASIR

WHERER.C#=IR.C#

GROUPBYIR.C#

);

19)按各科平均成绩从低到高和及格率的百分数从高到低顺序

SELECTt.C#AS课程号,max(course.Cname)AS课程名,isnull(AVG(score),0)AS平均成绩

,100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)AS及格百分数

FROMSCT,Course

wheret.C#=course.C#

GROUPBYt.C#

ORDERBY100*SUM(CASEWHENisnull(score,0)>=60THEN1ELSE0END)/COUNT(*)DESC

20)查询如下课程平均成绩和及格率的百分数(用"1行"显示):企业管理(001),马克(002),OO&UML(003),数据库(004)

SELECTSUM(CASEWHENC#='001'THENscoreELSE0END)/SUM(CASEC#WHEN'001'THEN1ELSE0END)AS企业管理平均分

,100*SUM(CASEWHENC#='001'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='001'THEN1ELSE0END)AS企业管理及格百分数

,SUM(CASEWHENC#='002'THENscoreELSE0END)/SUM(CASEC#WHEN'002'THEN1ELSE0END)AS马克思平均分

,100*SUM(CASEWHENC#='002'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='002'THEN1ELSE0END)AS马克思及格百分数

,SUM(CASEWHENC#='003'THENscoreELSE0END)/SUM(CASEC#WHEN'003'THEN1ELSE0END)ASUML平均分

,100*SUM(CASEWHENC#='003'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='003'THEN1ELSE0END)ASUML及格百分数

,SUM(CASEWHENC#='004'THENscoreELSE0END)/SUM(CASEC#WHEN'004'THEN1ELSE0END)AS数据库平均分

,100*SUM(CASEWHENC#='004'ANDscore>=60THEN1ELSE0END)/SUM(CASEWHENC#='004'THEN1ELSE0END)AS数据库及格百分数

FROMSC

21)查询不同老师所教不同课程平均分从高到低显示

SELECTmax(Z.T#)AS教师ID,MAX(Z.Tname)AS教师姓名,C.C#AS课程ID,MAX(C.Cname)AS课程名称,AVG(Score)AS平均成绩

FROMSCAST,CourseASC,TeacherASZ

whereT.C#=C.C#andC.T#=Z.T#

GROUPBYC.C#

ORDERBYAVG(Score)DESC

22)查询如下课程成绩第3名到第6名的学生成绩单:企业管理(001),马克思(002),UML(003),数据库(004)[学生ID],[学生姓名],企业管理,马克思,UML,数据库,平均成绩

SELECTDISTINCTtop3

SC.S#As学生学号,

Student.SnameAS学生姓名

T1.scoreAS企业管理,

T2.scoreAS马克思,

T3.scoreASUML,

T4.scoreAS数据库,

ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)as总分

FROMStudent,SCLEFTJOINSCAST1

ONSC.S#=T1.S#ANDT1.C#='001'

LEFTJOINSCAST2

ONSC.S#=T2.S#ANDT2.C#='002'

LEFTJOINSCAST3

ONSC.S#=T3.S#ANDT3.C#='003'

LEFTJOINSCAST4

ONSC.S#=T4.S#ANDT4.C#='004'

WHEREstudent.S#=SC.S#and

ISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)

NOTIN

(SELECT

DISTINCT

TOP15WITHTIES

FROMsc

LEFTJOINscAST1

ONsc.S#=T1.S#ANDT1.C#='k1'

LEFTJOINscAST2

ONsc.S#=T2.S#ANDT2.C#='k2'

LEFTJOINscAST3

ONsc.S#=T3.S#ANDT3.C#='k3'

LEFTJOINscAST4

ONsc.S#=T4.S#ANDT4.C#='k4'

ORDERBYISNULL(T1.score,0)+ISNULL(T2.score,0)+ISNULL(T3.score,0)+ISNULL(T4.score,0)DESC);

23)统计列印各科成绩,各分数段人数:课程ID,课程名称,[100-85],[85-70],[70-60],[<60]

SELECTSC.C#as课程ID,Cnameas课程名称

,SUM(CASEWHENscoreBETWEEN85AND100THEN1ELSE0END)AS[100-85]

,SUM(CASEWHENscoreBETWEEN70AND85THEN1ELSE0END)AS[85-70]

,SUM(CASEWHENscoreBETWEEN60AND70THEN1ELSE0END)AS[70-60]

,SUM(CASEWHENscore<60THEN1ELSE0END)AS[60-]

FROMSC,Course

whereSC.C#=Course.C#

GROUPBYSC.C#,Cname;

24)查询学生平均成绩及其名次

SELECT1+(SELECTCOUNT(distinct平均成绩)

FROM(SELECTS#,AVG(score)AS平均成绩

)AST1

WHERE平均成绩>T2.平均成绩)as名次,

S#as学生学号,平均成绩

FROM(SELECTS#,AVG(score)平均成绩

)AST2

ORDERBY平均成绩desc;

25)查询各科成绩前三名的记录:(不考虑成绩并列情况)

SELECTt1.S#as学生ID,t1.C#as课程ID,Scoreas分数

FROMSCt1

WHEREscoreIN(SELECTTOP3score

WHEREt1.C#=C#

ORDERBYscoreDESC

ORDERBYt1.C#;

26)查询每门课程被选修的学生数

selectc#,count(S#)fromscgroupbyC#;

27)查询出只选修了一门课程的全部学生的学号和姓名

selectSC.S#,Student.Sname,count(C#)AS选课数

fromSC,Student

whereSC.S#=Student.S#groupbySC.S#,Student.Snamehavingcount(C#)=1;

28)查询男生、女生人数

Selectcount(Ssex)as男生人数fromStudentgroupbySsexhavingSsex='男';

Selectcount(Ssex)as女生人数fromStudentgroupbySsexhavingSsex='女';

29)查询姓“张”的学生名单

SELECTSnameFROMStudentWHERESnamelike'张%';

查30)询同名同性学生名单,并统计同名人数

selectSname,count(*)fromStudentgroupbySnamehavingcount(*)>1;

32)1981年出生的学生名单(注:Student表中Sage列的类型是datetime)

selectSname,CONVERT(char(11),DATEPART(year,Sage))asage

fromstudent

whereCONVERT(char(11),DATEPART(year,Sage))='1981';

32)查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

SelectC#,Avg(score)fromSCgroupbyC#orderbyAvg(score),C#DESC;

33)查询平均成绩大于85的所有学生的学号、姓名和平均成绩

selectSname,SC.S#,avg(score)

fromStudent,SC

whereStudent.S#=SC.S#groupbySC.S#,Snamehavingavg(score)>85;

34)查询课程名称为“数据库”,且分数低于60的学生姓名和分数

SelectSname,isnull(score,0)

fromStudent,SC,Course

whereSC.S#=Student.S#andSC.C#=Course.C#andCourse.Cname='数据库'andscore<60;

35)查询所有学生的选课情况;

SELECTSC.S#,SC.C#,Sname,Cname

FROMSC,Student,Course

whereSC.S#=Student.S#andSC.C#=Course.C#;

36)查询任何一门课程成绩在70分以上的姓名、课程名称和分数;

SELECTdistinctstudent.S#,student.Sname,SC.C#,SC.score

FROMstudent,Sc

WHERESC.score>=70ANDSC.S#=student.S#;

37)查询不及格的课程,并按课程号从大到小排列

selectc#fromscwherescore<60orderbyC#;

38)查询课程编号为003且课程成绩在80分以上的学生的学号和姓名;

selectSC.S#,Student.SnamefromSC,StudentwhereSC.S#=Student.S#andScore>80andC#='003';

39)求选了课程的学生人数

selectcount(*)fromsc;

40)查询选修“叶平”老师所授课程的学生中,成绩最高的学生姓名及其成绩

selectStudent.Sname,scorefromStudent,SC,CourseC,Teacher

whereStudent.S#=SC.S#andSC.C#=C.C#andC.T#=Teacher.T#andTeacher.Tname='叶平'andSC.score=(selectmax(score)fromSCwhereC#=C.C#);

41)查询各个课程及相应的选修人数

selectcount(*)fromscgroupbyC#;

42)查询不同课程成绩相同的学生的学号、课程号、学生成绩

selectdistinctA.S#,B.scorefromSCA,SCBwhereA.Score=B.ScoreandA.C#<>B.C#;

43)查询每门功成绩最好的前两名

WHEREscoreIN(SELECTTOP2score

44)统计每门课程的学生选修人数(超过10人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,查询结果按人数降序排列,若人数相同,按课程号升序排列

selectC#as课程号,count(*)as人数

fromsc

groupbyC#

orderbycount(*)desc,c#

45)检索至少选修两门课程的学生学号

selectS#

groupbys#

havingcount(*)>=2

46)查询全部学生都选修的课程的课程号和课程名

selectC#,Cname

fromCourse

whereC#in(selectc#fromscgroupbyc#)

47)查询没学过“叶平”老师讲授的任一门课程的学生姓名

selectSnamefromStudentwhereS#notin(selectS#fromCourse,Teacher,SCwhereCourse.T#=Teacher.T#andSC.C#=course.C#andTname='叶平');

48)查询两门以上不及格课程的同学的学号及其平均成绩

selectS#,avg(isnull(score,0))fromSCwhereS#in(selectS#fromSCwherescore<60groupbyS#havingcount(*)>2)groupbyS#;

49)检索“004”课程分数小于60,按分数降序排列的同学学号

selectS#fromSCwhereC#='004'andscore<60orderbyscoredesc;

THE END
1.lv防伪码查询入口(lv防伪码查询网站查询)防伪码查询入口可以提供一种安全保障,以确保您购买的商品是真实和未经篡改的。LV网站查询可以帮助消费者验证商品的合法和真实。 LV防伪码查询入口通常包括一组独特的数字,它们可以在LV官方网站或指定的防伪码查询平台上进行验证。这些防伪码通常印在商品上,如手袋、钱包或其他配饰上。 https://www.315fangwei.com/315zhenwei/43427.html
2....小型拎包LV/LAGASHA...LAGASHAVIP服务:商品编号:5634698 找商品,VIP,批发服务 此商品进行代购转运 ? 此商品进行自助代购 ? 去Google翻译 SIZE ◇サイフ部分 実寸 約 縦13cm 横22cm 未使用箱付きブランド:リッキー&ヒッキー札入れ×多数 小銭入れ×1 カード入れ×17 その他ポケット×2 ※なお購入後のキャンセルやカラー...https://www.jchere.com/productdetail/5634698.html
3.隐私政策日志信息:当您使用我们的网站或客户端提供的互联网电子服务或商品时,我们会自动收集您对我们服务的详细使用情况,作为有关网络日志保存。例如您的搜索查询内容、IP地址、浏览器的类型、电信运营商、使用的语言、访问日期和时间及您访问的网页记录等。 如您不同意收集记录前述信息,我们可能无法完成风控验证。 https://www.wenwo.com/h5/app/chart/doctor/agreement/privacy
4.查询发出商品明细账中业务类型只有分期收款和委托代销两种,系统...C. 收款单编号 D. 销售数量 查看完整题目与答案 【单选题】以下哪个业务类型不可以录入期初发货单( )。 A. 直运销售 B. 普通销售 C. 委托代销 D. 分期收款 查看完整题目与答案 【判断题】系统收款户名/账号需和凭证填写收款户名/账号一致。 A. 正确 B. 错误 查看完整题目与答案 ...https://www.shuashuati.com/ti/99ec8b95402b4d2783dc55818238222f.html?fm=bdbdsde907ae1b74404c76838d29a650efa01
5.基于微信小程序的购物系统的设计和实现.docx表 3.1 用户信息表字段英文名称字段中文名称约束条件说明 ID 用户编号 not null 主键 email 用户名 null password 用户登陆密码 null tel 用户联系电话 null address 用户详细地址 null (2)商品信息(goods)表主要存储商品信息,其中包括商品编号(ID)、商品名称(title)、商品价格、(price)、商品详情(detail)以及商品...https://max.book118.com/html/2023/0809/7041030143005142.shtm
6.待上架商品突然变成未知状态,已售出商品突然变成待上架洞察喵补充投诉03-26 20:42:33 已隐藏内容 洞察喵发起投诉03-26 20:09:24 我寄卖了一个lv的包,鉴定通过,拍照编辑状态,本应该定价上架了,突然变成未知状态,查询不到任何信息;同时我以前卖出的一只gucci包从已售出状态变成了待上架,咋回事我包呢https://tousu.sina.com.cn/complaint/view/17349239824/
1.每天认识一个品牌——LV#品牌知识普及 #品牌知识分享 #品牌知识故事 #挑战每天了解一个品牌 #每天都要了解一个品牌 #每天了解一个奢侈品牌 #每天学习一个品牌知识 #每天get一个新品牌 #每天get一下品牌 #每天Get一个新潮流 #每天解锁一个联名品牌 #每天解锁一个品牌故事 #我的LV包包 #我的LV这样搭 #双十一好物情报 #我的双十一好...https://m.dewu.com/note/trend/details?id=245162975
2.奢侈品行业资讯,奢侈品行业资讯网行业资讯正品LV包通常会附带以下几种票据和证书: 1. 购物小票:购买LV包时,商店会提供购物小票,上面标注了购买日期、商品信息、价格等信息。 2. 产品身份卡:有些LV包附带产品身份卡,也称为产品凭证卡或防伪卡。这是一个具有唯一编号的卡片,上面有商品的基本信息和防伪标识,可用于验证产品的真伪和正品性。 http://www.gambxh.com/hyzx/90cadfdaf0e8d4cc.html
3.新建商品房合同备案网上查询系统受理编号是什么政策法规新建商品房合同备案网上查询系统 受理编号是什么房屋备案 商品房 购房合同 提问者:妈妈的小小棉袄 发布于2015-04-21 北京市回答 分享 相关搜索推荐 房屋备案 商品房 购房合同 共1个回答 起个名真累丨Lv 3 虎uuuuuuuuuuugggggglsd回来的开始过铃铛 的 +1 2015-04-21 精选...https://m.fang.com/ask/ask_9934361.html
4.预售商品房买卖合同编号与备案合同编号不同免费法律咨询如何查证商品房买卖合同编号 购房者在购买了商品房并完成网签手续后,如何在网上查询《商品房买卖合同》是否备案,如何验证合同编号手否有效?要解答这些问题,首先要弄清楚什么是商品房买卖合同。商品房买卖合同,是指房地产开发企业将尚未建成或者已经竣工的房屋向社会销售,转移房屋所 商品房预售合同登记备案 华律网小编事...https://m.66law.cn/question/40671027.aspx
5.lv超a级货衣服吐血整理,小白党必备一些网站的LV或者爱马仕写的N级,A级AB级,都是什么意思?多谢 1、LV是来自法国巴黎一百多年前的LOUIS VUITTON,简写为“LV”,中文被译为“路易.威登”。LV的皮件精品可列为顶级名牌皮件商品之一,除此之外它还有各式皮包、男女装、香水、丝巾、钢笔、手表等等。现在的设计总监是Marc Jacobs。 https://zzxiecheng.com/post/27607.html
6.番茄代售收藏 分享 有299人查看商品 商品编号:MY120612 可买终身包赔 MY120612号 1600枪炮大师,30光,六连枪炮带两个小号宝石lv7*10 lv10*1 "1600六连枪炮" 价格 ¥ 2999.00 库存:1 名称 命运方舟 类型 游戏账号 区服 一区卢佩恩-卢特兰 角色职业: 射手(男) 二次实名: 可二次实名 账号登录端: QQ服务保障:...https://fqds.com/detail/MY120612
7....关系代数掌握情况(含详细解答)关系代数查询商品名称根据Customer,Orders,Goods三个关系,用关系代数表达式表示:查询客户“张岩”购买的商品名称及购买数量 三、解题思路 1.在customer表中找到并提取张岩的客户编号(cid) 这里需要先提取出来张岩这一行(选择),然后将代表他客户编号的列提取出来,与下一张表组成新的表,即自然连接Orders表,以便在第二张Orders表中通过cid提...https://blog.csdn.net/Alita233_/article/details/127188881
8.在佛山房产备案查询系统能查到什么?佛山买房攻略佛山市各区新建商品房、存量房可登录佛山市房地产信息网进行网上登记。登录后在首页搜索栏输入项目名称。点击进入要查询的具体楼盘,通过楼盘查看楼盘信息,或登录后点击首页“业务查询”,填写相应的业务编号或合同号和证件号,输入验证码确认无误后,即可查看合同信息,如状态成交房屋、总价、面积等 ...https://foshan.jiwu.com/gonglve/11517.html
9.基于django+python+mysql的进销存管理系统的设计与实现商场货物出售功能:可以在商场商品列表中出售任意商品,可以通过输入出售商品的 数量来出售。并且出售的商品数量和总金额会自动记录在账目列表中,以供账目查询。 商场商品的查询功能:可以选择输入的商品编号、商品名称、生产日期来对商场商品 进行模糊查询。 商场商品修改功能:可以选择任意商品来修改它的商品价格。 https://cloud.tencent.com/developer/article/1951701
10.网站首页绿健园人要把全面健康的新理念和发自内心的关爱带给所有消费者, 通过不断的创新,为全社会提供高品质的产品和高品质的服务。 24小时服务热线: 400-066-1688 公司简介 Company profile 绿健园公司简介 Lvjianyuan company profile 绿健园是一家集研发、生产、销售为一体的多元化股份制企业。公司自2003年成立发展至今,不...http://www.bjljy.com/
11.HTC官网HTC 官网 全部产品 区块链智能手机 VIVE VIVERSE 支持帮助 在线客服 体验全新推出的VIVE Focus Vision!立即购买,获赠3款VR内容 >Previous 为你量身定制的沉浸式体验。 应用VIVE VR/AR和XR设备体验新的现实。 立即购买 VIVE Focus Vision 全新的PC VR 体验。立即购买,还可获赠3款VR游戏。 了解详情 ...https://www.htc.com/cn/