안녕하세요.
특정 테이블에서 과거의 데이터는 제외하고 최신연도의 데이터의 개수를 구하고 싶습니다. DBMS는 MySQL을 사용하였습니다.
예를 들어
cYear, wId, wSalary
2015, 1111, 250
2014, 1111, 270
2015, 2222, 350
2014, 3333, 400
2013, 3333, 230
2013, 4444, 350
위와 같이 데이터가 있는 경우, wId 1111인 사람의 경우는 2014년, wId가 3333인 사람의 2013년 wSalary는 제외하고 나머지 세개의 wSalary 값을 합하는 쿼리를 만들고 싶습니다.
즉 wId가 1111인 사람은 cYear가 2015인 튜플의 wSalary인 250, wId가 2222인 사람은 cYear가 2015인 튜플의 wSalary인 350, wId 3333은 cYear가 2014연도 튜플의 wSalary인 400, wId 444는 cYear가 2013인 튜플의 wSalary인 350 들만 select해서 이들을 합하고 싶습니다.
따라서 결과는 1350 (250+350+400+350)이 나와야 합니다.
쿼리를 짤때 wId로 group by를 하고, 그 들 중 cYear가 MAX 것들만 select하여 이들의 합을 구하면 될 것 같아 아래와 같이 쿼리를 짜봤는데, 희한하게 최신연도가 아닌 wSalary 값도 같이 들어갑니다.
SELECT SUM(wSalary) FROM table WHERE cYear in (SELECT MAX(cYear) FROM table GROUP BY wId)
대체 뭐가 잘못되었는지를 모르겠습니다.
쿼리 고수님들 답변 부탁드립니다. |