bigquery从3个工作日减去

时间:2018-04-12 11:06:49

标签: sql google-bigquery

我知道您可以按日期从日期中减去天数:

SELECT DATE_SUB(DATE "2008-12-25", INTERVAL 3 DAY) as three_days_ago;

但如何减去3 business天?

2 个答案:

答案 0 :(得分:2)

您可以尝试使用CASE表达式

SELECT
    CASE WHEN DAYOFWEEK(date) IN (2, 3, 4)    -- Monday, Tuesday, Wednesday
         THEN DATE_SUB(date, INTERVAL 5 DAY)
         WHEN DAYOFWEEK(date) = 1
         THEN DATE_SUB(date, INTERVAL 4 DAY)
         ELSE DATE_SUB(date, INTERVAL 3 DAY) END AS three_days_ago
FROM yourTable;

对于星期天,我们需要增加一天才能过去星期六,这是不可能的。同样地,对于周一到周三,我们需要增加两天来覆盖整个周末,这不能计算在内。对于周四到周六,我们可以减去3天,所有这些都是工作日。

答案 1 :(得分:0)

试试这个。它会适用于所有情况。

Empid   01-Jan-2018   02-Jan-2018   03-Jan-2018
1        1              0.5           1
2        0.5                          1
3        1