sql 时间计算问题

img

如何用sql server 计算每组tttt最大值对于的时间减去tttt最小值对于的tttt的分钟数,求出如下结果:

img

img

select 工作人员编号,进出货标志,组,
case when "间隔时间(小时)_用秒参数"=0 then '0'
     else cast("间隔时间(小时)_用秒参数" as varchar)
     end "间隔时间(小时)_用秒参数",
case when "间隔时间(小时)_用分钟参数"=0 then '0'
     else cast("间隔时间(小时)_用分钟参数" as varchar)
     end "间隔时间(小时)_用分钟参数"
from
(
    select 工作人员编号,进出货标志,组,
    --用相差秒转换精度好像更高一点
    Convert(decimal(15,8),datediff(second,min(交易时间),max(交易时间)))/3600 as "间隔时间(小时)_用秒参数",
    Convert(decimal(15,8),datediff(minute,min(交易时间),max(交易时间)))/60 as "间隔时间(小时)_用分钟参数"
    from
    (  --模拟数据
       select '436742123' 工作人员编号,'出' 进出货标志,'2022/11/20 11:24:33' 交易时间,255 组,1 出货次序
       union all
       select '436742123' 工作人员编号,'出' 进出货标志,'2022/11/21 08:49:11' 交易时间,255 组,2 出货次序
       union all
       select '436742123' 工作人员编号,'出' 进出货标志,'2022/11/21 11:14:37' 交易时间,255 组,3 出货次序
       union all
       select '436742123' 工作人员编号,'进' 进出货标志,'2022/11/21 11:37:41' 交易时间,226 组,1 出货次序
       union all
       select '436742123' 工作人员编号,'进' 进出货标志,'2022/11/21 11:41:16' 交易时间,227 组,1 出货次序
       union all
       select '436742123' 工作人员编号,'进' 进出货标志,'2022/11/21 12:48:52' 交易时间,228 组,1 出货次序
       union all
       select '436742123' 工作人员编号,'出' 进出货标志,'2022/11/21 15:27:57' 交易时间,229 组,1 出货次序
       union all
       select '436742123' 工作人员编号,'出' 进出货标志,'2022/11/21 16:10:15' 交易时间,229 组,2 出货次序
       -- ...
    ) t
    group by 工作人员编号,进出货标志,组
) t
order by 工作人员编号,组

img

SELECT  [工作人员编号]
      ,[进出货标志]
      ,[组]
      ,datediff(ss,min([交易时间]),max([交易时间]))/3600.0
  FROM [master].[dbo].[test_001] group by [工作人员编号]
      ,[进出货标志]
          ,[组]

img


img

分组求出最大值和最小值,再用时间差函数求出时间间隔
如有帮助,望采纳