SQL面试题目

/*SQL经典面试题及答案2007年07月27日 星期五 上午 8:421.一道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','负')

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

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

select a.rq,a.a1 胜,b.b1 负 from
(select rq,shengfu,count(shengfu) a1 from #tmp where shengfu='胜' group by rq,shengfu) a,
(select rq,shengfu,count(shengfu) b1 from #tmp where shengfu='负' group by rq,shengfu) b
where a.rq=b.rq


/*2.请教一个面试中遇到的SQL语句的查询问题
表中有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 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分表示不及格。  
       显示格式:  
       语文              数学                英语  
       及格              优秀                不及格    
------------------------------------------
*/
create table course
(
	语文 varchar(10) null,
	数学 varchar(10) null,
	英语 varchar(10) null,
)
insert into course values('80','90','100')
insert into course values('24','30','100')
insert into course values('50','80','30')
insert into course values('20','40','90')
insert into course values('80','90','100')
select
	(case when 语文>=80 then '优秀' when 语文>=60 then '及格' else '不及格' end) as 语文,
	(case when 数学>=80 then '优秀' when 数学>=60 then '及格' else '不及格' end) as 数学,
	(case when 英语>=80 then '优秀' when 英语>=60 then '及格' else '不及格' end) as 英语
from course

select distinct (pono),COUNT(*) from PA_SBXX group by pono having   Count(*)>91
select distinct(pono), count(*)as t from PA_SBXX where DATEPART(MONTH,DQSJ)=6 
             and DATEPART(DAY,DQSJ)=11 group by pono having  count(*) < 200
alter database CodeSQL set single_user with rollback immediate--设置数据库成单用户访问模式
backup database CodeSQL to disk 文件路劲


alter database CodeSQL set single_user with rollback immediate--设置数据库成单用户访问模式

backup database CodeSQL to disk 文件路劲

CREATE PROCEDURE [dbo].[过程名] AS 
declare 
@filename nvarchar(100),--文件名 
@NowDay int --设置时间 
set @filename='D:\data'+cast(Day(GetDate()) as varchar(2))+'.dat' --文件路径及文件名 
Set @NowDay=Day(GetDate()) 
if (@NowDay>=20) or (@NowDay<=10) --这个月的20到下个月的10要备份 
begin 
print @filename BACKUP DATABASE [数据库名()你也可以设参数] TO DISK = @filename WITH INIT , NOUNLOAD , NAME = N'XX数据备份', NOSKIP , STATS = 10, NOFORMAT 
end




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值