SQL经典面试题与答案.docVIP

  • 6
  • 0
  • 约4.39千字
  • 约 5页
  • 2017-06-19 发布于湖北
  • 举报
SQL经典面试题及答案 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 2 2005-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 rq 2) 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.rq 3)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) b where 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 优秀 ??????? whe

文档评论(0)

1亿VIP精品文档

相关文档