1、常见SQL笔试题SQL笔试题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(casewhenshengfu=负then1else0end)负from#tmpgroupbyr
2、q2)selectN.rq,N.胜,M.负from(selectrq,胜=count(*)from#tmpwhereshengfu=胜groupbyrq)Ninnerjoin(selectrq,负=count(*)from#tmpwhereshengfu=负groupbyrq)MonN.rq=M.rq3)selecta.col001,a.a1胜,b.b1负from(selectcol001,count(col001)a1fromtemp1wherecol002=胜groupbycol001)a,(selectcol001,count(col001)b1fromtemp1wherecol002=
3、负groupbycol001)bwherea.col001=b.col0012.条件判断SQL练习表中有ABC三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列答案:select(casewhenabthenaelsebend),(casewhenbcthenbeslecend)fromtable_name3.日期统计SQL练习请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)答案:select*fromtbwheredatediff(dd,SendTime,getd
4、ate()=04.统计查询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及格e
5、lse不及格)as英语,fromtable7.请用一个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.业绩yj
6、as二月份,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(cas
7、ewhenb.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(casewhen
8、b.mon=11thenb.yjelse0end)as十一月份,sum(casewhenb.mon=12thenb.yjelse0end)as十二月份,fromtable2aleftjointable1bona.dep=b.dep8.华为一道面试题一个表中的Id有多个记录,把所有这个id的记录查出来,并显示共有多少条记录数。答案:selectid,Count(*)fromtbgroupbyidhavingcount(*)1select*from(selectcount(ID)ascountfromtablegroupbyID)TwhereT.count19.统计查询SQL练习用一条SQL语句查
9、询出每门课都大于80分的学生姓名namekechengfenshu张三语文81张三数学75李四语文76李四数学90王五语文81王五数学100王五英语90A:selectdistinctnamefromtablewherenamenotin(selectdistinctnamefromtablewherefenshu=2);(2)表名:成绩表姓名课程分数张三语文81张三数学75李四语文56李四数学90王五语文81王五数学100王五英语49给出成绩全部合格的学生信息(包含姓名、课程、分数),注:分数在60以上评为合格答:select*from成绩表where姓名notin(selectdistin
10、ct姓名from成绩表where分数=60)(3)表名:商品表名称产地进价苹果烟台2.5苹果云南1.9苹果四川3西瓜江西1.5西瓜北京2.4给出平均进价在2元以下的商品名称答:select名称from商品表groupby名称havingavg(进价)600(5)表名:高考信息表准考证号数学语文英语物理化学2006001108119981271362006002149105110142129给出高考总分在600以上的学生准考证号答:select准考证号from高考信息表where(数学+语文+英语+物理+化学)600(6)表名:clubidgenderage67M1968F3069F2770F1
11、671M32查询出该俱乐部里男性会员和女性会员的总数答:selectgender,count(id)fromclubgroupbygender(7)表名:teamID(number型)Name(varchar2型)1a2b3b4a5c6c要求:执行一个删除语句,当Name列上有相同时,只保留ID这列上值小的例如:删除后的结果应如下:ID(number型)Name(varchar2型)1a2b5c请写出SQL语句。deletefromteamwhereidnotin(selectmin(id)fromteamgroupbyname)(8)表名:studentnamecoursescore张青语文72王华数学72张华英语81张青物理67李立化学98张燕物理70张青化学76查询出“张”姓学生中平均成绩大于75分的学生信息答:select*fromstudentwherenamein(selectnamefromstudentwherenamelike张%groupbynamehavingavg(score)75)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1