5 sql datediff google-bigquery
我有一个相当简单的查询;它看起来像这样:
SELECT
order_date,
pickup_date,
DATE_DIFF(pickup_date,order_date, day) order_to_pickup
FROM
`orders.table`
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,我需要计算工作日的日期差异,而不是所有日期。
因此,上面的查询返回的不是:
+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19 | 4/3/19 | 5 |
| 3/29/19 | 4/2/19 | 4 |
+------------+-------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
我希望它返回:
+------------+-------------+-----------------+
| order_date | pickup_date | order_to_pickup |
+------------+-------------+-----------------+
| 3/29/19 | 4/3/19 | 2 |
| 3/29/19 | 4/2/19 | 3 |
+------------+-------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
这应该是 @Elliott Brossard 提到的简化的非暴力解决方案:
select
order_date,
pickup_date,
case
when date_diff(pickup_date, order_date, week) > 0
then date_diff(pickup_date, order_date, day) - (date_diff(pickup_date, order_date, week) * 2)
else
date_diff(pickup_date, order_date, day)
end
from `orders.table`
Run Code Online (Sandbox Code Playgroud)