【问题标题】:Calculate working hours between exit date and 3 months before exit date bigquery sql计算退出日期和退出日期前 3 个月之间的工作时间 bigquery sql
【发布时间】:2021-07-09 01:48:27
【问题描述】:

我正在尝试计算 bigquery sql 中两个日期之间的总工作时间: 日期介于 MAX(date)DATE_SUB(MAX(date), 间隔 3 个月) 之间。 换句话说,我想知道从离职日期到离职日期前 3 个月的工作时间总和。

当前表是这样的:

id date hours
abc 2020-10-01 12
abc 2020-12-07 4
abc 2020-12-12 12
abc 2020-12-25 6
abc 2021-01-07 9
abc 2021-02-04 7

理想的输出是:

id hours
abc 38

我有多个工人,工人有不同的工作日期和时间。

【问题讨论】:

  • 请解释一下您所说的工作时间是什么意思。你有日历表吗?
  • 抱歉..我没有单独的日历表。您可以将工作时间视为工人在 0 到 24 小时之间工作的时间。

标签: sql google-bigquery


【解决方案1】:

我们这里需要一个子查询先计算exit_date

with mytable as (
  select 'abc' as id, DATE '2020-10-01' as date, 12 as hours union all
  select 'abc' as id, DATE '2020-12-07' as date, 4 as hours union all
  select 'abc' as id, DATE '2020-12-12' as date, 12 as hours union all
  select 'abc' as id, DATE '2020-12-25' as date, 6 as hours union all
  select 'abc' as id, DATE '2021-01-07' as date, 9 as hours union all
  select 'abc' as id, DATE '2021-02-04' as date, 7 as hours
)
select 
  id,
  sum(hours) as hours
from (
  select *, MAX(date) OVER (PARTITION BY id) as exit_date
  from mytable
)
where date >= DATE_SUB(exit_date, INTERVAL 3 MONTH)
group by id

【讨论】:

    猜你喜欢
    • 2017-10-17
    • 2020-05-15
    • 2015-09-10
    • 2021-07-20
    • 2012-02-13
    • 1970-01-01
    • 2010-09-20
    • 1970-01-01
    相关资源
    最近更新 更多