SQL Server练习

SQL Server 基本语法: http://www.w3school.com.cn/sql/sql_intro.asp 

 

练习1:

运行语句:

USE [Test1]
select 
FNumber,
(case 
when FAmount>0 then FAmount
else 0
end
) as 收入,
(
case
when FAmount<0 then ABS(FAmount)
else 0
end
) as 支出
from Table_1

效果:

 

练习2:

运行语句:

USE [Test]
select 
Name,
(
case Score
when N'' then 1
else 0
end
) as 胜,
(
case  Score
when N'' then 1
else 0
end
)asfrom Table_1

 

效果:

 

执行语句:

USE [Test]
select 
Name,
Sum(
case Score
when N'' then 1
else 0
end
) as 胜,
Sum(
case  Score
when N'' then 1
else 0
end
)asfrom Table_1
 group by Name

 

效果图:

 练习3:

 

取出通话时间最长的前5个 执行语句:

USE [Test1]
select top 5 * from Table_2
order by DATEDIFF(SECOND,StartDateTime,EndDateTime) Desc

 

执行结果:

 

输出所有数据中拨打长途号码(以0开头)的总时长 执行语句:

USE [Test1]
select  Sum(DATEDIFF(SECOND,StartDateTime,EndDateTime)) from Table_2
where TelNum like '0%'

 

执行结果:

 

输出本月通话总时长最多的前三个呼叫员的编号:执行语句:

USE [Test1]
--select  DATEDIFF(Month,convert(datetime,'2015-1-1'),convert(datetime,'2015-2-2')) from Table_2

--select CallerNumber,telNum, DATEDIFF(Month,startDateTime,convert(datetime,'2015-1-2')) from Table_2

--select CallerNumber,telNum, DATEDIFF(Month,startDateTime,GETDATE()) from Table_2

--select *  from Table_2 
--where DATEDIFF(Month,startDateTime,convert(datetime,'2015-1-15'))=0

select top 3  CallerNumber  from Table_2 
where DATEDIFF(Month,startDateTime,convert(datetime,'2015-1-15'))=0
group by CallerNumber
order by Sum(DATEDIFF(Month,startDateTime,EndDateTime)) Desc

 

效果图:

 

输出一月份拨打次数最多的前三个呼叫员的编号,运行代码:

USE [Test1]
select top 3 CallerNumber,count(*) from Table_2
where DATEDIFF(Month,startDateTime,convert(datetime,'2015-1-15'))=0
group by CallerNumber
order by  count(*) Desc

 

效果图:

 

输出所有数据的拨号流水,并且在最后一行添加总呼叫时长:

USE [Test1]

select  CallerNumber,TelNum,DATEDIFF(SECOND,startDateTime,EndDatetime) from Table_2

union all

select '汇总',
convert(nchar(20),
SUM(
case when TelNum not like '0%' then DATEDIFF(SECOND,startDateTime,EndDatetime)
else 0
end
)) as 市内通话,
SUM(
case when TelNum  like '0%' then DATEDIFF(SECOND,startDateTime,EndDatetime)
else 0
end
) as 长途电话通话
from Table_2

 

效果图:

 

posted @ 2015-03-24 11:35  代码沉思者  阅读(687)  评论(0编辑  收藏  举报