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

SQL数据表处理练习

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

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://daobk.com/post/74.html

分享给朋友:

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

MSSQLServer基础

MSSQLServer基础

什么是 SQL?SQL 指结构化查询语言SQL 使我们有能力访问数据库SQL 是一种 ANSI 的标准计算机语言SQL 能做什么?SQL 面向数据库执行查询SQL 可从数据库取回数据SQL 可在数据库中插入新的记录SQL 可更新数据库中的数据SQL 可从数据库删除记录SQL 可创建新数据库SQL 可...

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

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

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

SQL练习

SQL练习

有一个 统计结果表,按要求输出:select 名字,SUM ( case 比赛结果 when '胜' then 1   --如果时候胜 就输出1 else 0 &nb...

全国省市县数据库 SQLServer版

全国省市县数据库 SQLServer版

全国省市县数据库 SQLServer版,数据比较老,测试学习数据库用:/**********创建省级表**********/  CREATE TABLE T_Province  (  ProID INT IDENTITY(1...

发表评论

访客

看不清,换一张

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