SQL语句⾯试题
1.⼀道SQL语句⾯试题,关于group by
表内容:
2005-05-09 胜label标签的使用方法
sharepoint2010安装模式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
解决SQL:
select id, sum(case when result='胜' then 1 else 0 end)'胜',sum(case when result='负' then 1 else 0 end)'负' from test01 group by id;
select N.id,N.x,M.y from
(select id,count(*) as x from test01 where result='胜' group by id)N inner join
(select id,count(*) as y from test01 where result='负' group by id)M on N.id=M.id
select t1.id,t1.s1 as "胜",t2.s2 as "负" from (select id,COUNT(*) as "s1" from test01 where result="胜" group by id) t1 , (select id,COUNT(*) as "s2" from test01 where result="负" group by id) t2 w
2.表中有A B C三列,⽤SQL语句实现:当A列⼤于B列时选择A列否则选择B列,当B列⼤于C列时选择B
列否则选择C列。
select (case when A > B then A else B end),(case when B>C then B ELSE C end) from test03;
3、⼀个⽇期判断的sql语句?
请取出tb_send表中⽇期(SendTime字段)为当天的所有记录?(SendTime字段为datetime型,包含⽇期与时间)
select * from test03 where datediff(create_time,NOW())=0;--mysql
4、有⼀张表,⾥⾯有3个字段:语⽂,数学,英语。其中有3条记录分别表⽰语⽂70分,数学80分,英语58分,请⽤⼀条sql语句查询出这三条记录并按以下条件显⽰出来(并写出您的
思路):
⼤于或等于80表⽰优秀,⼤于或等于60表⽰及格,⼩于60分表⽰不及格。
显⽰格式:
语⽂数学英语
及格优秀不及格
select (case when A > 80 then '优秀' when A >= 60 then '及格' else '不及格' end) AS "语⽂",
(case when B > 80 then '优秀' when B >= 60 then '及格' else '不及格' end) AS "数学",
(case when C > 80 then '优秀' when C >= 60 then '及格' else '不及格' end) AS "英语" from test03;
以下主要针对SQL SERVER 2000
软件测试转行什么比较合适?5、在sqlserver2000中请⽤sql创建⼀张⽤户临时表和系统临时表,⾥⾯包含两个字段ID和IDValues,类型都是int型,并解释下两者的区别?
------------------------------------------
⽤户临时表:create table #xx(ID int, IDValues int)
系统临时表:create table ##xx(ID int, IDValues int)
区别:
⽤户临时表只对创建这个表的⽤户的Session可见,对其他进程是不可见的.
当创建它的进程消失时这个临时表就⾃动删除.
全局临时表对整个SQL Server实例都可见,但是所有访问它的Session都消失的时候,它也⾃动删除.
6、sqlserver2000是⼀种⼤型数据库,他的存储容量只受存储介质的限制,请问它是通过什么⽅式实现这种⽆限容量机制的。
------------------------------------------
它的所有数据都存储在数据⽂件中(*.dbf),所以只要⽂件够⼤,SQL    Server的存储容量是可以扩⼤的.
SQL Server 2000 数据库有三种类型的⽂件:
主要数据⽂件
主要数据⽂件是数据库的起点,指向数据库中⽂件的其它部分。每个数据库都有⼀个主要数据⽂件。主要数据⽂件的推荐⽂件扩展名是 .mdf。
次要数据⽂件
次要数据⽂件包含除主要数据⽂件外的所有数据⽂件。有些数据库可能没有次要数据⽂件,⽽有些数
据库则有多个次要数据⽂件。次要数据⽂件的推荐⽂件扩展名是 .ndf。
⽇志⽂件
⽇志⽂件包含恢复数据库所需的所有⽇志信息。每个数据库必须⾄少有⼀个⽇志⽂件,但可以不⽌⼀个。⽇志⽂件的推荐⽂件扩展名是 .ldf。
7、请⽤⼀个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
mysql面试题sql优化02      10        8        null
03      null      5        8
04      null      null      9
select a.部门名称dname,b.业绩yj as '⼀⽉份',c.业绩yj as '⼆⽉份',d.业绩yj as '三⽉份'
from table2 a,table1 b,table1 c,table1 d
where a.部门dep = b.部门dep and b.⽉份mon = '⼀⽉份' and
a.部门dep = c.部门dep and c.⽉份mon = '⼆⽉份' and
a.部门dep = d.部门dep and d.⽉份mon = '三⽉份' and
select a.dep,
sum(case =1 then b.yj else 0 end) as '⼀⽉份',
sum(case =2 then b.yj else 0 end) as '⼆⽉份',
sum(case =3 then b.yj else 0 end) as '三⽉份',
sum(case =4 then b.yj else 0 end) as '四⽉份',
sum(case =5 then b.yj else 0 end) as '五⽉份',
sum(case =6 then b.yj else 0 end) as '六⽉份',
sum(case =7 then b.yj else 0 end) as '七⽉份',
reassess
sum(case =8 then b.yj else 0 end) as '⼋⽉份',
sum(case =9 then b.yj else 0 end) as '九⽉份',
sum(case =10 then b.yj else 0 end) as '⼗⽉份',
sum(case =11 then b.yj else 0 end) as '⼗⼀⽉份',
sum(case =12 then b.yj else 0 end) as '⼗⼆⽉份',
from table2 a left join table1 b on a.dep=b.dep
8、华为⼀道⾯试题
⼀个表中的Id有多个记录,把所有这个id的记录查出来,并显⽰共有多少条记录数。
select A,COUNT(*) FROM test03 group by A having count(*) > 1; -- 最好
select * from (select count(A) count from test03 group by A) t unt > 1;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。