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

상괭이님의 프로필 이미지
상괭이

작성한 질문수

[개념은 호옹~, 실습 빡] SQL 데이터 분석, 활용!

학점을 평균보다 잘주는 강의, TOP 3는?

JOIN, 서브쿼리 결과 정렬 질문

작성

·

254

0

-- 4. 강의별 평균 학점, 꿀강의 TOP 3 조회

SELECT courses.title AS "강의명", ROUND(AVG(grade_points.point), 2) AS "평균 학점"

FROM courses

JOIN grades ON grades.course_id = courses.id

JOIN grade_points ON grade_points.grade = grades.grade

GROUP BY courses.title

ORDER BY AVG(point) DESC

LIMIT 3

;

1.png

 

-- 서브쿼리 이용 답

SELECT courses.title AS "강의명", ggul_courses.round AS "평균 학점"

FROM courses

JOIN (

-- 강의별_평균학점

SELECT course_id, ROUND(AVG(grade_points.point), 2)

FROM grades

JOIN grade_points ON grade_points.grade = grades.grade

GROUP BY course_id

HAVING AVG(point) > (

-- 모든_강의의_평균_학점

SELECT AVG(point)

FROM grades

JOIN grade_points ON grade_points.grade = grades.grade

)

ORDER BY AVG(point) DESC

LIMIT 3

) AS ggul_courses ON ggul_courses.course_id = courses.id

;

2.png

 

일반 JOIN이용과 서브쿼리 이용 결과가 다르게 출력되는데

서브쿼리 안에서 정렬을 했지만 최종 결과는 정렬이 되지 않네요?

왜 그런건가요..? 이러면 JOIN이 더 나은 걸까요?

답변 1

0

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

조인문과 서브쿼리에 대한 퍼포먼스 비교는
정렬 여부와 별개로
얼마나 빠른 시간내에
결과를 만들어느냐가 중요합니다

상괭이님의 프로필 이미지
상괭이

작성한 질문수

질문하기