У меня есть таблица, содержащая сотрудников, и в этой таблице у меня есть следующие данные:
id username employee_status
33189 SLEE 3
36351 SLEE 0
29096595 SLEE 0
19197668 AARM 0
20738021 AARM 0
29097305 AARM 0
В то время как статус сотрудника 3 означает активный, 0 означает неактивный. Таким образом, эти данные означают, что пользователь SLEE был перенесен пару раз и все еще работает в компании, а пользователь AARM был перенесен несколько раз и покинул компанию.
Мне нужно отдельное соединение на этой таблице. Я мог бы написать такой запрос:
SELECT username
, MAX(id)
FROM employees
GROUP BY username;
Но проблема здесь в том, что максимальный идентификатор не всегда означает, что активный пользователь (если он есть) всегда имеет максимальный идентификатор, как вы можете видеть в пользовательском SLEE.
Мне нужно написать условное объединение, если есть пользователь со статусом сотрудника 3, который возвращает максимальный идентификатор. Примерно такой запрос:
SELECT userid
, IF(employeestatus = 3 THEN id ELSE MAX(id) END)
FROM employees
GROUP BY userid;
Но этот запрос не работает. Ожидаемый результат:
id username employee_status
33189 SLEE 3
29097305 AARM 0