请问以下sql语句该怎么写?

marklr 2010-11-10 04:27:20
表-1
userName

tom
cake
Mike

表-2

userName beginTime endTime
tom 2010-11-2 8:00:00 2010-11-3 12:00:00
tom 2010-11-3 9:00:00 2010-11-5 12:00:00
Mike 2010-11-5 9:00:00 2010-11-7 12:00:00



如何得到以下2条SQL语句
(1) 在 表-2 中如何分组统计每个员工,开始时间和结束时间的时间差汇总,以分钟为单位
(2) 如何得到以下人员名单,根据当前的服务器时间,在 表-2 中处于开始时间和结束时间的范围内
...全文
48 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-11-10
  • 打赏
  • 举报
回复
create table tb1(userName varchar(10))
insert into tb1 values('tom')
insert into tb1 values('cake')
insert into tb1 values('Mike')
create table tb2(userName varchar(10),beginTime datetime,endTime datetime)
insert into tb2 values('tom' ,'2010-11-2 8:00:00', '2010-11-3 12:00:00')
insert into tb2 values('tom' ,'2010-11-3 9:00:00', '2010-11-5 12:00:00')
insert into tb2 values('Mike' ,'2010-11-5 9:00:00', '2010-11-7 12:00:00')
go

--1
select m.userName , isnull(sum(datediff(mi,n.beginTime ,n.endTime)),0) from tb1 m
left join tb2 n on m.userName = n.userName
group by m.userName
/*
userName
---------- -----------
cake 0
Mike 3060
tom 4740
*/

--2
select m.* , n.* from tb1 m, tb2 n where m.userName = n.userName
and getdate() between n.beginTime and n.endTime
/*
userName userName beginTime endTime
---------- ---------- ------------------------------------------------------ ------------------------------------------------------

(所影响的行数为 0 行)
*/

drop table tb1,tb2
dawugui 2010-11-10
  • 打赏
  • 举报
回复
--1
select m.userName , isnull(sum(datediff(mi,n.beginTime ,n.endTime)),0) from tb1 m
left join tb2 on m.userName = n.userName
group by m.userName

--2
select m.* , n.* from tb1 , tb2 where m.userName = n.userName
and getdate() between n.beginTime and n.endTime

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧