인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

Inflearn Community Q&A

jumee's profile image
jumee

asked

[A hundred words are not as good as seeing once] Advanced SQL for data analysis

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

Written on

·

180

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;

window함수sql

Answer 1

0

jaemin님의 프로필 이미지
jaemin
Instructor

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

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

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

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

jumee's profile image
jumee

asked

Ask a question