如何解决如何在SQL中根据开始日期和结束日期在一年月份的水平上汇总度量?
employee_id start_date end_date hours
123 09-01-2019 09-02-2019 8
123 09-28-2019 10-01-2019 32
我想重写查询,所以与其说得更细致,不如说我只是想知道雇员在一年月份级别上的总和,如下所示:
employee_id Year_Month hours
123 201909 32
123 201910 8
员工在9月有4天,因此4 * 8 = 32,在10月有一天,所以在10月有8个小时。我的问题是,相邻月份之间会有开始和结束日期。我不确定如何编写查询以获取所需的输出,对此我将非常感谢
解决方法
使用递归查询在每个月中生成一系列天数,然后按月汇总并计数,可能会更简单:
with
data as (< your existing query here >),cte (employee_id,dt,max_dt) as (
select employee_id,start_date,end_date from data
union all
select employee_id,dt + 1,max_dt from cte where dt + 1 < max_dt
)
select employee_id,to_char(dt,'yyyymm') year_months,count(*) * 8 hours
from mytable
group by employee_id,'yyyymm')
假设您每天要花费8个小时,
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。