我在下面模拟了数据的外观:
Job_ID Employee
1 Tim
1 John
1 Tim
2 Dave
并且我想返回:
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;