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

问题描述 投票:0回答:2

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

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

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

sql partition
2个回答
2
投票

您可以只使用GROUP BY

SELECT job_id, employee
FROM data
GROUP BY job_id, employee

甚至只是一个SELECT DISTINCT

SELECT DISTINCT job_id, employee
FROM data

1
投票

简单解决方案:

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;
© www.soinside.com 2019 - 2024. All rights reserved.