Уникальные имена с отделом сотрудников

У меня есть база данных сотрудников, и сотрудники появляются несколько раз.

  • В некоторых экземплярах одного и того же сотрудника есть отдел сотрудников, где, как и в некоторых других случаях, отдел сотрудников отсутствует. Для этого мне нужно найти отличное имя сотрудника вместе с отделом сотрудника.

  • Некоторые сотрудники вообще не имеют отдела сотрудников. Для этого мне нужно только найти отличное имя сотрудника.

Мой запрос:

------for each unique employee, find department
--select columns
select 
  a.employee_name,b.employee_dept
from
  --unique employee names
  (
   select 
     distinct employee_name 
   from 
     employeeDB 
   where 
     employee_name is not null and employee_name != ''
   order by employee_name asc
  ) as a,
  --employee name and employee dept sorted
  (
  select 
     employee_name,employee_dept 
   from 
     employeeDB 
   where employee_name is not null and employee_name != ''
   order by employee_name asc, employee_dept desc
  ) as b
--condition for join
where
  a.employee_name = b.employee_name
order by a.employee_name asc, b.employee_dept desc
limit 1000

Я не уверен, почему результаты не возвращают уникальные результаты. я получаю результаты, подобные приведенным ниже

Name  Dept
A     DepA
A     DepB
A   
B     DepA
B   
C     DepZ
D   
E   

person StatguyUser    schedule 10.03.2017    source источник


Ответы (1)


Это получит все уникальные имена (путем их группировки) и захватит (в алфавитном порядке) самое высокое employee_dept, которое он может найти для каждого

select employee_name, max(employee_dept) as dept
from employeeDB 
where employee_name is not null and employee_name != ''
group by employee_name
order by employee_name asc
limit 1000
person juergen d    schedule 10.03.2017
comment
Извините, я перефразировал свой вопрос. второй столбец - название отдела. - person StatguyUser; 10.03.2017
comment
Хорошо, тогда переименуйте его в моем запросе. - person juergen d; 10.03.2017
comment
Проблема в том, что отдел - это не числовой запрос, а скорее поле имени, и max может не давать требуемый результат для строковых данных. - person StatguyUser; 10.03.2017
comment
тогда позвольте мне попробовать этот запрос. Спасибо!! - person StatguyUser; 10.03.2017
comment
это дало мне ошибку stackoverflow. ком/вопросы/42762587/ - person StatguyUser; 15.03.2017
comment
Эта ошибка не имеет ничего общего с этим запросом. Ваш жесткий диск заполнен. Сделать пространство - person juergen d; 15.03.2017