我正在尝试找出一个查询,其中有一个表格代表以下内容:
我需要结果来表示最早的开始时间(蓝色),最晚的结束时间(绿色)和午休时间的总和(黄色):
我得到了正确的蓝色和绿色块,但正在努力与黄色聚合。
我的(部分)查询如下:
select
Name,
min(StartTime) StartTime,
max(EndTime) EndTime,
sum( <please help here with alternative to this aggregation> ) Lunch
from
SomeTable
group by
Name
当我使用普通子查询时,SQL会抱怨该列不包含在“group by”或聚合中,并且我不能在聚合中使用子查询。
请指出我对“午餐”专栏的指示。
这是在SQL Server上。
答案 0 :(得分:4)
假设价值是时间,则总和有点挑战性。我建议转换成分钟:
select Name, min(StartTime) as StartTime, max(EndTime) as EndTime,
sum(case when activity = 'lunch'
then datediff(minute, 0, duration)
end) as lunch_minutes
from SomeTable
group by Name
答案 1 :(得分:2)
会建议你像这样使用案例: 总和(活动='午餐'然后持续时间结束时的情况)为休息