针对每个唯一 ID 显示每个唯一名称 - 分区结束了吗?

Show each unique name against each unique ID - partition over?

我在下面模拟了我的数据:

Job_ID    Employee
1         Tim
1         John
1         Tim
2         Dave

我想 return:

Job_ID    Employee
1         Tim
1         John
2         Dave

作业 ID 1 现在有两个条目,因为该作业有两个员工。

我希望这可以通过 PARTITION BY 实现:

SELECT job_id, employee OVER (PARTITION BY employee)
   from data

但我想我误解了在这种情况下如何使用它?

你可以只使用 GROUP BY:

SELECT job_id, employee
FROM data
GROUP BY job_id, employee

甚至只是一个 SELECT DISTINCT:

SELECT DISTINCT job_id, employee
FROM data

简单的解决方案:

select distinct job_id, employee 
from emp_job 
order by job_id, employee ;

分区:

select d1.job_id, d1.employee 
from 
  (SELECT job_id, employee, 
          row_number() OVER (partition by job_id, employee 
                             order by employee) as rnk 
   from data
)d1
where d1.rnk = 1

在 Teradata 中分区:

SELECT job_id, employee 
from emp_job 
qualify row_number() OVER (partition by job_id, employee 
                           order by data) = 1;