备用sql小案例

--字符串函数
select len('213')

select len(sName),sName from student

select lower('adfCE')
select upper('asdf23')

select '    abc   '
select ltrim('  abc  ')
select rtrim('  abc  ') + '123'
select ltrim(rtrim('   abc   ')) + '123'

--
select left('张三',1)
--ip1551616414

select right('ip1551616414',len('ip1551616414')-2) + 1
--起始位置从1开始
select substring('ip1551616414',1,2)

--查询班级内所有学生的姓
select distinct left(sName,1) from student

 

--日期函数
select getdate()

select dateadd(day,3,getdate())

select dateadd(month,-1,getdate())

select dateadd(year,-1,getdate())

select dateadd(quarter,1,getdate());
select dateadd(week,1,getdate());


select year(getdate())
select month(getdate())
select day(getdate())

--当前月的销售记录
select * from xsjl
where month(date) = month(getdate()) and year(date) = year(getdate())

--datediff
select datediff(day,getdate(),'2012-12-21')
select datediff(second,getdate(),'2012-12-21')

--求当月销售记录
select * from xsjl
where datediff(month,date,getdate())=0

--统计不同生日年份的学生个数
select count(*),year(sBirthday)
from student
group by year(sBirthday)

--求每个年龄有多少个学生
select DateDiff(year,sBirthday,getdate())
,count(*) from student Group by DateDiff(year,sBirthday,getdate())


--datename datepart
select datename(year,getdate()) --字符串
select datepart(year,getdate()) --整数

--一年中的第几天
select datename(dayofyear,getdate())
--一年中的第几周
select datename(week,getdate())

select datename(weekday,getdate())
select datepart(weekday,getdate())

 

--类型转换
--问题
select '平均分数' + 123
select avg(english) from score
select * from student


select '平均分数' + cast(23.56 as varchar(5))
select cast(right(sNo,3) as int)+1 from student


--不4舍5入
select cast (89.6 as int)
--4舍5入
select cast (round(89.6,0) as int)

select cast(89.239345 as decimal(10,2))
select cast(avg(english) as decimal(10,2)) from score

--convert
select convert(int,89.63934)
select convert(decimal(10,2),89.64789)
select convert(decimal(10,2),avg(english)) from score


select convert(varchar(30),getdate(),20)
select convert(varchar(20),getdate(),21)
select convert(varchar(30),getdate(),23)

select convert(varchar(10),getdate(),108)

select convert(varchar(10),getdate(),20)
select sId, sName, sAge, sNo, convert(varchar(10),sBirthday,20), sClassId, sSex, convert(varchar(10),sIntime,108), sPhone
from student


--isnull
select * from score

select studentId,isnull(english,0)
from score

select avg(english) from score
select sum(english)/count(sId) from score

 


select cast(avg(isnull(english,0)) as decimal(10,2)) from score


--输出所有数据中通话时间最长的5条记录。orderby datediff
select top 5 * from [CallRecords]
order by datediff(ss,[StartDateTime],[EndDateTime])desc from CallRecords
--输出所有数据中拨打长途号码(对方号码以0开头)的总时长。like、sum
select sum(datediff(ss,StartDateTime,EndDatetime)) as 总时长 from CallRecords
where TelNum like '0%'
--输出本月通话总时长最多的前三个呼叫员的编号。
select top 3 CallerNumber,sum(datediff(ss,startdatetime,enddatetime)) from callrecords
where datediff(month,startdatetime,'2012-7-5') = 0
group by callernumber
order by sum(datediff(ss,startdatetime,enddatetime)) desc
--
--输出本月拨打电话次数最多的前三个呼叫员的编号.group by,count(*)
select top 3 CallerNumber,count(*) from callrecords
where datediff(month,startdatetime,'2012-7-5') = 0
group by callernumber
order by count(*) desc

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值