数据库SQL经典面试笔试题答案.DOC
文本预览下载声明
SQL经典面试题及答案
2007年07月27日 星期五 上午 08:42
1.一道SQL语句面试题,关于group by表内容:2005-05-09 胜2005-05-09 胜2005-05-09 负2005-05-09 负2005-05-10 胜2005-05-10 负2005-05-10 负如果要生成下列结果, 该如何写sql语句???????????? 胜 负2005-05-09 2 22005-05-10 1 2------------------------------------------create table #tmp(rq varchar(10),shengfu nchar(1))insert into #tmp values(2005-05-09,胜)insert into #tmp values(2005-05-09,胜)insert into #tmp values(2005-05-09,负)insert into #tmp values(2005-05-09,负)insert into #tmp values(2005-05-10,胜)insert into #tmp values(2005-05-10,负)insert into #tmp values(2005-05-10,负)
1)select rq, sum(case when shengfu=胜 then 1 else 0 end)胜,sum(case when shengfu=负 then 1 else 0 end)负 from #tmp group by rq2) select N.rq,N.勝,M.負 from (select rq,勝=count(*) from #tmp where shengfu=胜group by rq)N inner join(select rq,負=count(*) from #tmp where shengfu=负group by rq)M on N.rq=M.rq3)select a.col001,a.a1 胜,b.b1 负 from(select col001,count(col001) a1 from temp1 where col002=胜 group by col001) a,(select col001,count(col001) b1 from temp1 where col002=负 group by col001) bwhere a.col001=b.col001
2.请教一个面试中遇到的SQL语句的查询问题表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否则选择C列。------------------------------------------select (case when ab then a else b end ),(case when bc then b esle c end)from table_name
3.面试题:一个日期判断的sql语句?请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与时间)------------------------------------------select * from tb where datediff(dd,SendTime,getdate())=0
4.有一张表,里面有3个字段:语文,数学,英语。其中有3条记录分别表示语文70分,数学80分,英语58分,请用一条sql语句查询出这三条记录并按以下条件显示出来(并写出您的思路):???? 大于或等于80表示优秀,大于或等于60表示及格,小于60分表示不及格。???????? 显示格式:???????? 语文????????????? 数学??????????????? 英语???????? 及格????????????? 优秀??????????????? 不及格????------------------------------------------select(case when 语文=80 then 优秀??????? when 语文=60 then 及格else 不及格) as 语文,(case when 数学=80 then 优秀??????? when 数学=60 then 及格else 不及格) as 数学,(case when 英语=80 then 优秀??????? when 英语=60 then 及格e
显示全部