我有三个表。第一个被称为"订单",订单日期与处理订单的员工一起存储。
order_date | employee_id |
---|---|
2015年8月1日 | 101 |
2015年8月1日 | 101 |
2017年8月1日 | 102 |
2017年8月1日 | 119 |
try:
WITH o AS (
SELECT
employee_id,
order_date,
COUNT(employee_id) AS num_orders
FROM `dataset.Orders`
GROUP BY employee_id, order_date
)
SELECT
o.employee_id,
e.name,
h.shift_date,
SAFE_DIVIDE(o.num_orders, h.total_work_in_seconds/3600) AS order_per_work_hour
FROM o
LEFT JOIN `dataset.Employee_Hours` h ON o.employee_id=h.employee_id AND o.order_date=h.shift_date
LEFT JOIN `dataset.Employees` e ON o.employee_id=e.employee_id
尽管如此,我还没有测试过,因为我的BQ中没有类似的数据。
我认为你需要左联接,因为你的预期输出只有接受订单的工人,但如果不是这样,你可以使用更适合你需求的联接类型。