Oracle SQL: как удалить дубликаты сотрудников из результатов? - PullRequest
0 голосов
/ 07 ноября 2019

Мне нужно написать запрос для удаления повторяющихся идентификаторов сотрудников среди 10000 результатов

EmpID   name

 1       x
 1       x
 2       y
 2       y
 3       z
 4       A

Результат должен быть только:

EmpID   name

 3       z
 4       A

 Select * from EMPLOYEE where ?

Как я могу это сделать?

Ответы [ 3 ]

4 голосов
/ 07 ноября 2019

Вам нужна агрегация:

select e.empid, e.name
from employee e 
group by e.empid, e.name
having count(*) = 1;
1 голос
/ 07 ноября 2019

Вы можете попробовать ниже -

Select empid,name from EMPLOYEE
group by empid,name
having count(*)=1
0 голосов
/ 07 ноября 2019

Я бы действительно попросил вас использовать метод, отличный от GROUP BY, так как вы сможете выбрать другие поля таблицы EMPLOYEE вместе с EMPID и NAME.

, используя analytical function

SELECT * FROM 
(SELECT T.*, COUNT(1) OVER (PARTITION BY EMPID) AS CNT
FROM EMPLOYEE) 
WHERE CNT = 1;

Использование NOT EXISTS

SELECT * FROM EMPLOYEE T
WHERE NOT EXISTS 
(SELECT 1 FROM EMPLOYEE TIN 
WHERE TIN.ID = T.ID AND TIN.ROWID <> T.ROWID);

Приветствия !!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...