假设有 10 条记录:
我唯一的想法是某种窗口函数,它可以执行类似的操作(我将其重写为 pyspark,但更容易用 SQL 解释):
SELECT
employee_id,
department,
CASE
WHEN COUNT(*) OVER (PARTITION BY department) = COUNT(net_income) OVER (PARTITION BY department)
THEN 1
ELSE 0
END AS every_emp_net_inc_flag
FROM
employees;
然后我会有 df1,其中 flag = 1,以及 df2,其中 flag = 0。
我正在尝试寻找更优雅的解决方案,但找不到任何解决方案。 谢谢
嗨,这可以使用像这样更有效的方法来实现
Create or replace temp view tbla as
Select department,
Min(CASE WHEN net_income is null then 0 else 1 end) income_missing_flag
来自员工
现在我们将上面的临时视图与原始表员工连接起来以获得标志
Select a.* ,b.income_missing_flag
From employees a left join tbla b
on a.department=b.department