sql语句小练习
2012-11-07 16:43
253 查看
1计算100天后病毒发作的日期。
print
convert(varchar(50),
dateadd(day,100,getdate()),111)
2凡是入职一年以上的员工,工资增加500¥
update employee
set fsalary=fsalary+500
where datediff(yy,empintime,GETDATE())=1
3计算1975年10月5日到现在现在相差多少年/月/日/小时?
print
datediff(yy,'1975-10-5',getdate())
print
datediff(mm,'1975-10-5',getdate())
print
datediff(dd,'1975-10-5',getdate())
print
datediff(hh,'1975-10-5',getdate())
4统计2008年入职的员工
select
COUNT(*) from
T_Employee where
DATEPART(yy,
入职日期)='2008'
5输出所有数据中通话时间最长的5条记录。
select top 5
* from
t_callers order by
DATEDIFF(ss,startdatetime,enddatetime)
desc
6将结果集加入一列“通话时长(秒)”
select top 5
*,DATEDIFF(SS,startdatetime,enddatetime)
as 通话时长
from t_callers order
by DATEDIFF(SS,startdatetime,enddatetime)
desc
三、Case函数用法
1.1
use
School
SELECT
* FROM
Score
SELECT
* FROM
Student
--90分以上优秀
--80分以上良好
--70分以上中等
--60分以上及格
--60分以下不及格
select FName,FEnglish,
(case
when FEnglish>=90
then '优秀'
when FEnglish>=80
then '良好'
when FEnglish>=70
then '中等'
when FEnglish>=60
then '及格'
else '不及格'
end
)
from MyStudents
2、要求,查询结果集中有A B C三列,用SQL语句实现:当A列大于B列时,在C中显示A列的值否则显示B列中的值。
select a,b,
(
case
when a>b
then a
else b
end
) as
'c'
from abc
3、
在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>6000金牌,>5500银牌,>4500铜牌,否则普通)
select
销售员,总销售金额=SUM(销售数量*销售价格),
(
case
when
SUM(销售数量*销售价格)>6000
then '金牌'
when
SUM(销售数量*销售价格)>5500
then '银牌'
when
SUM(销售数量*销售价格)>4500
then '铜牌'
else '普通'
end
)
from
MyOrders group by
销售员
4
单号
金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号
收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
select number,
(
case
when
ammont>0 then
ammont
else 0
end
)as
收入,
(
case
when
ammont>0 then 0
else
ABS(ammont)
end
)as
支出
from
_abs
convert(varchar(50),
dateadd(day,100,getdate()),111)
2凡是入职一年以上的员工,工资增加500¥
update employee
set fsalary=fsalary+500
where datediff(yy,empintime,GETDATE())=1
3计算1975年10月5日到现在现在相差多少年/月/日/小时?
datediff(yy,'1975-10-5',getdate())
datediff(mm,'1975-10-5',getdate())
datediff(dd,'1975-10-5',getdate())
datediff(hh,'1975-10-5',getdate())
4统计2008年入职的员工
select
COUNT(*) from
T_Employee where
DATEPART(yy,
入职日期)='2008'
5输出所有数据中通话时间最长的5条记录。
select top 5
* from
t_callers order by
DATEDIFF(ss,startdatetime,enddatetime)
desc
6将结果集加入一列“通话时长(秒)”
select top 5
*,DATEDIFF(SS,startdatetime,enddatetime)
as 通话时长
from t_callers order
by DATEDIFF(SS,startdatetime,enddatetime)
desc
三、Case函数用法
1.1
use
School
SELECT
* FROM
Score
SELECT
* FROM
Student
--90分以上优秀
--80分以上良好
--70分以上中等
--60分以上及格
--60分以下不及格
select FName,FEnglish,
(case
when FEnglish>=90
then '优秀'
when FEnglish>=80
then '良好'
when FEnglish>=70
then '中等'
when FEnglish>=60
then '及格'
else '不及格'
end
)
from MyStudents
2、要求,查询结果集中有A B C三列,用SQL语句实现:当A列大于B列时,在C中显示A列的值否则显示B列中的值。
select a,b,
(
case
when a>b
then a
else b
end
) as
'c'
from abc
3、
在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>6000金牌,>5500银牌,>4500铜牌,否则普通)
select
销售员,总销售金额=SUM(销售数量*销售价格),
(
case
when
SUM(销售数量*销售价格)>6000
then '金牌'
when
SUM(销售数量*销售价格)>5500
then '银牌'
when
SUM(销售数量*销售价格)>4500
then '铜牌'
else '普通'
end
)
from
MyOrders group by
销售员
4
单号
金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号
收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
select number,
(
case
when
ammont>0 then
ammont
else 0
end
)as
收入,
(
case
when
ammont>0 then 0
else
ABS(ammont)
end
)as
支出
from
_abs
相关文章推荐
- 基础篇—SQL语句相关概念及练习
- 走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 2
- 经典的SQL语句,适合新手练习使用(一)
- SQL语句相关概念及练习之基础篇
- SQL练习题,MySQL数据库查询语句经典例题练习,附带答案和运行效果截图以供参考
- SQL数据库面试题以及答案(50例题优化版-增加图片):你必知必会的SQL语句练习
- Oracle自带表(EMP)SQL语句练习
- SQL语句练习
- sql语句练习50题
- SQLserver运维必备:T-SQL语句练习
- 常用sql语句练习-3
- SQL 语句练习
- SQL语句练习实例之三——平均销售等待时间
- MySQL权限更改示例及SQL语句练习
- SQL语句练习-过滤数据
- mysql的sql语句练习
- SQL语句练习1
- sql语句练习
- SQL语句练习
- 走向面试之数据库基础:一、你必知必会的SQL语句练习-Part 1