当前位置:首页 > 数据库 > SQL > 正文内容

SQL数据表处理练习

小道6年前 (2018-08-27)SQL5035

SQL数据表处理练习

有一个 工作表 如下:

image.png

以下输出结果全部依分钟计算。

(一)输出所有数据中通话时间最长的5条记录:

select top 5 * from 工作 order by DATEDIFF(MI,开始时间,结束时间) desc

输出结果:

image.png

(二)输出所有数据中拨打长途号码的总时长:

select SUM(DATEDIFF(mi,开始时间,结束时间)) as 长途电话总时长 from 工作 where 电话 like '0%'

输出结果:

image.png

(三)输出本月通话时长最多的前三位员工工号:

select top 3 工号,SUM(DATEDIFF(mi,开始时间,结束时间)) as 本月通话总时长前三     --输出
from 工作 
where DATEPART(MM,开始时间) = DATEPART(MM,GETDATE())   --判断 获取通话时间和当前时间的月份是否相等
group by 工号    --根据工号分组
order by SUM(DATEDIFF(mi,开始时间,结束时间)) desc   --根据通话时长 降序排列

输出结果:

image.png

(四)输出本月拨打电话次数最多的员工编号:

select top 3 工号,COUNT(*) as 拨打电话次数  --输出
from 工作 --工作表
where DATEDIFF(MM,开始时间,GETDATE()) =0   --判断通话时间和当前时间的月份是否为0,如果为0,则是本月。
group by 工号   --根据 工号 分组
order by COUNT(*) desc   --根据次数降序排列

输出结果:

image.png

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

select 工号,电话,DATEDIFF(MI,开始时间,结束时间) as 通话时长 from 工作   -- 先得到所有拨号数据
union all  
select '汇总',
CONVERT(varchar(50),SUM(DATEDIFF(mi,开始时间,结束时间))), -- 输出 长途通话时长。CONVERT 是将 长途通话时长 转变为 varchar 类型。与上面  电话 类型 匹配。
(select SUM(DATEDIFF(mi,开始时间,结束时间)) from 工作 where 电话 not like '0%')  --子查询 输出市内通话时长
from 工作 
where 电话 like '0%'

输出结果:

image.png


另一种写法:

select 工号,电话,DATEDIFF(MI,开始时间,结束时间) as 通话时长 from 工作   -- 先得到所有拨号数据
union all  
select '汇总',
CONVERT(varchar(50),sum((
case
when 电话 like '0%' then DATEDIFF(MI,开始时间,结束时间)
else 0
end
))) as 长途通话总时长,
sum((
case
when 电话 not like '0%' then DATEDIFF(MI,开始时间,结束时间)
else 0
end
))as 市内通话总时长
from 工作

输出结果:

image.png


扫描二维码推送至手机访问。

版权声明:本文由小道发布,如需转载请注明出处。

本文链接:https://www.daobk.com/post/74.html

分享给朋友:

“SQL数据表处理练习” 的相关文章

SQL语句:过滤重复数据(distinct)

SQL语句:过滤重复数据(distinct)

SQL语句:过滤重复数据先通过ALTER TABLE语句添加 新的列:alter table person add 国籍 nvarchar(max) alter table person add 学校&nbs...

SQL语句:联合结果集union语句

SQL语句:联合结果集union语句

SQL语句:联合结果集union语句Person表数据:在创建一个 临时 表。create table 临时(ID uniqueidentifier not null,name nvarchar(max),age int,国籍&n...

SQL Date 函数

SQL Date 函数

SQL Date 函数当我们处理日期时,最难的任务恐怕是确保所插入的日期的格式,与数据库中日期列的格式相匹配。只要数据包含的只是日期部分,运行查询就不会出问题。但是,如果涉及时间,情况就有点复杂了。SQL Server Date 函数下面的表格列出了 SQL Server 中最重要的内建日期函数:函...

SQL case函数

SQL case函数

当我们需要从数据源上 直接判断数据显示代表的含义的时候 ,就可以在SQL语句中使用 Case When这个函数了.有一个 客户表:根据表内等级 查找 客户等级:select 名字,年龄, ( --括号内 case 等级 --查找等级列 when ...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。