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

인프런 커뮤니티 질문&답변

M `님의 프로필 이미지
M `

작성한 질문수

[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이

1번 문제 풀이

Ollivander's Inventory 윈도우 함수 min() over

작성

·

276

0

 

SELECT id, age, min_coins, power
  FROM
    (SELECT W.id, WP.age, W.coins_needed, W.power
     , MIN(W.coins_needed) OVER(PARTITION BY age, power ORDER BY coins_needed) min_coins
  FROM Wands W INNER JOIN Wands_Property WP ON W.code = WP.code
 WHERE WP.is_evil = 0) sub
ORDER BY power DESC, age DESC

 

 

MIN() OVER(PARTITION BY) 로는 문제 못 푸나요??
푸는 방법 알려줄 수있나요??

중복된 power가 많이 나와요 ㅠㅠㅠ

 

답변 1

1

지식공유자 J님의 프로필 이미지
지식공유자 J
지식공유자

coins_needed가 age와 power 기준으로 묶은 각 그룹의 최소값과 일치하는 경우의 데이터만 조회해야하는데, 작성하신 쿼리로는 모든 데이터가 조회됩니다.

아래와 같이 WHERE 절 조건을 추가해야합니다.

SELECT id, age, min_coins, power
  FROM
    (SELECT W.id, WP.age, W.coins_needed, W.power
     , MIN(W.coins_needed) OVER(PARTITION BY age, power ORDER BY coins_needed) min_coins
     FROM Wands W INNER JOIN Wands_Property WP ON W.code = WP.code
     WHERE WP.is_evil = 0) sub
WHERE coins_needed = min_coins
ORDER BY power DESC, age DESC
M `님의 프로필 이미지
M `
질문자

감사합니다.

제가 놓치고 모르는 부분이 많네요 ㅠㅠ

성장통을 느끼고 있나봐요 ㅠㅠ

너무 어렵네요 ㅠㅠ

M `님의 프로필 이미지
M `

작성한 질문수

질문하기