• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

department highest salary - rank() over 사용한 문제 질문

22.08.17 13:32 작성 조회수 105

0

안녕하세요!

해당 문제를 rank() over 로 풀어보았는데 runtime error가 계속 발생해서 뭐가 틀렸는지 알 수가 없더라고요..ㅜ

아래와 같이 풀었는데 어떤 부분에서 안되는 것인지 확인 부탁드립니다!!ㅠ

 

SELECT ms.department

    ,ms.name AS Employee

    ,ms.salary

FROM(SELECT Employee.name

        ,salary

        ,RANK(salary) OVER(PARTITION BY departmentId ORDER BY salary DESC) AS rank

        ,Department.name AS department

    FROM Employee

    INNER JOIN Department ON Employee.departmentId = Department.id

    ) ms

WHERE ms.rank == 1;

답변 1

답변을 작성해보세요.

0

RANK() 함수의 괄호 안에는 컬럼 값을 쓰지 않고 RANK() OVER ... 이렇게 작성해 주셔야 합니다.

그리고 이 RANK()라는 함수가 있기 때문에 MySQL에서 'RANK'라는 이름을 예약어로 정해 놓아서 alias 별칭으로 사용할 때는 문제가 됩니다.

아래와 같이 rnk 등 다른 이름으로 변경해서 실행해 보세요!

RANK() OVER (PARTITION BY departmentId ORDER BY salary DESC) AS rnk