반응형
다음 필드가있는 두 개의 테이블이 있습니다.
emp_table: emp_id, emp_name
salary_increase: emp_id, inc_date, inc_amount
직원 세부 정보, 직원이 급여 인상을받은 횟수, 최대 인상 금액의 값 및 인상 날짜를 제공하는 쿼리를 작성해야합니다. 지금까지 내가 가진 것은 다음과 같습니다.
SELECT e.*, count(i.inc_amount), max(i.inc_amount)
FROM salary_increase AS i
RIGHT JOIN emp_table AS e
ON i.emp_id=e.emp_id
GROUP BY e.emp_id;
이는 최대 인상이 부여 된 날짜를 제외한 모든 요구 사항을 정확하게 제공합니다. 나는 성공하지 못한 채 다음을 시도했습니다.
SELECT e.*, count(i.inc_amount), max(inc_amount), t.inc_date
FROM salary_increase AS i
RIGHT JOIN emp_table AS e
ON i.emp_id=e.emp_id
RIGHT JOIN
(
SELECT emp_id, inc_date FROM salary_increase
WHERE inc_amount=max(inc_amount) GROUP BY emp_id
) AS t
ON e.emp_id=t.emp_id
GROUP BY e.emp_id;
이것은 '그룹 기능의 잘못된 사용'오류를 제공합니다. 내가 뭘 잘못하고 있는지 아는 사람 있나요?
해결 방법
where 절에서 WHERE inc_amount = max (inc_amount)
를 수행 할 수 없습니다. HAVING
을 사용하거나 조인 조건에서 수행하십시오. 대신 다음을 시도하십시오.
SELECT
e.emp_id,
e.inc_date,
t.TotalInc,
t.MaxIncAmount
FROM salary_increase AS i
INNER JOIN emp_table AS e ON i.emp_id=e.emp_id
INNER JOIN
(
SELECT
emp_id,
MAX(inc_amount) AS MaxIncAmount,
COUNT(i.inc_amount) AS TotalInc
FROM salary_increase
GROUP BY emp_id
) AS t ON e.emp_id = t.emp_id AND e.inc_amount = t.MaxIncAmount;
참조 페이지 https://stackoverflow.com/questions/20594953
반응형
'MySql' 카테고리의 다른 글
MySQL 가져 오기-줄이 있으면 테이블 삭제를 무시하는 방법은 무엇입니까? (0) | 2020.12.15 |
---|---|
MySQL MIN () 및 MAX ()는 MySQL의 CHAR / VARCHAR 문자열에서 어떻게 작동합니까? (0) | 2020.12.15 |
MySQL YYYY-DD-MM 형식의 PHP 문자열과 MySQL의 타임 스탬프가있는 경우 이들간에 변환하는 좋은 방법이 있습니까? (0) | 2020.12.15 |
MySQL Erlang mysql 예제 (0) | 2020.12.15 |
MySQL HTML 에코 내에서 변수로 큰 따옴표를 이스케이프 (0) | 2020.12.15 |
댓글