sql 笔试题

 
1.笔试题
 2005-05-09 胜
 2005-05-09 胜
 2005-05-09 负
 2005-05-09 负
 2005-05-10 胜
 2005-05-10 负
 2005-05-10 负
 显示结果:
          胜 负
2005-05-09 2 2
2005-05-10 1 2
 sql语句:
       SELECT rq,sum(case when shengfu='胜' then 1 else 0 end) as '胜',
            sum(case when shengfu='负' then 1 else 0 end) as '负' 
  from testwin group by rq
2.表中有A B C三列,用SQL语句实现:当A列大于B列时选择A列否则选择B列,当B列大于C列时选择B列否
则选择C列。
       
        SELECT  case when numA>numB then numA else numB end,
                case when numB>numC then numB else numC end  from testABC
3.请取出tb_send表中日期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含日期与
时间)
    
      select * from tb_send where DATEDIFF(sendtime,now())=0
    备注:sendtime-now()=0
===========================================================
4.语文aname,数学bname, 英语cname
   语文70分,数学80分,英语58分, 
 表结构为:
         aname,bname,cname
       1. 70,   80,   58
    
   SELECT  (case when aname>90 then '优秀' when aname>=70 then '及格' else '不及格' end) as
'语文',
           (case when bname>90 then '优秀' when bname>=70 then '及格' else '不及格' end) as
'数学',
           (case when cname>90 then '优秀' when cname>=70 then '及格' else '不及格' end) as
'外语'
       from score_tb
 
  显示结果:
         显示格式:  
       语文              数学                英语  
       及格              优秀                不及格  
=============================================================
5.请用一个sql语句得出结果
从table1,table2中取出如table3所列格式数据,注意提供的数据及结果不准确,只是作为一个格式向大
家请教。
如使用存储过程也可以。
table1
月份mon 部门dep 业绩yj
-------------------------------
一月份      01      10
一月份      02      10
一月份      03      5
二月份      02      8
二月份      04      9
三月份      03      8
table2
部门dep      部门名称dname
--------------------------------
      01      国内业务一部
      02      国内业务二部
      03      国内业务三部
      04      国际业务部
table3 (result)
部门dep 一月份      二月份      三月份
--------------------------------------
      01      10        null      null
      02      10         8        null
      03      null       5        8
      04      null      null      9
------------------------------------------
  sql :
    select dep.depno,
       sum(case when yj.mon='一月份' then yj.y else 0 end ) as '一月份',
       sum(case when yj.mon='二月份' then yj.y else 0 end ) as '二月份',
       sum(case when yj.mon='三月份' then yj.y else 0 end ) as '三月份'
       from dep LEFT JOIN yj 
       on dep.depno=yj.depno group by dep.depno
==========================================================================
6.
 用一条SQL语句查询出每门课都大于80分的学生姓名
name   kecheng   fenshu
张三     语文       81
张三     数学       75
李四     语文       76
李四     数学       90
王五     语文       81
王五     数学       100
王五     英语       90
sql语句:
SELECT  * from score where name not in (SELECT  distinct  name from score where fenshu<=80)

7.删除表的重复数据,并保留最小的rowId
 
create table testdel
(
 rowId  int primary key auto_increment,
 studentId int,
 studentname varchar(30)
)
insert into testdel (studentId,studentname) values('1','张三')
insert into testdel (studentId,studentname) values('2','李四')
insert into testdel (studentId,studentname) values('3','王五')
insert into testdel (studentId,studentname) values('4','赵六')
insert into testdel (studentId,studentname) values('1','张三')
insert into testdel (studentId,studentname) values('4','赵六')

SELECT  * from testdel where studentId in(
  SELECT studentId from testdel  group by studentId having count(*)>1   
  and 
  rowId not in (SELECT min(rowId) from testdel  group by studentId having count(*)>1)
)

你可能感兴趣的:(sql 笔试题)