inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

The report 관련 질문드립니다.

146

hamburger

작성한 질문수 2

1

안녕하세요, 강의 듣기 전 혼자 풀어보았는데요

저는 우선 between join 한 aa 테이블을 만들고,

grade가 8 이상인 테이블 bb, grade가 8 미만인 테이블 cc를 만들어 각각 order by 조건을 건 뒤 union을 통해 합쳐주는 쿼리문을 작성했습니다.

bb 테이블, cc 테이블의 결과를 각각 확인해보면 정답과 일치하는데

이 둘을 union으로 합치기만 하면 결과가 정답과 다르게 나오네요..

어디서 문제가 발생했는지 알고싶습니다.. ㅠㅠ

with aa as (

    select s.name, g.grade, s.marks 

    from students as s, grades as g

    where s.marks between g.min_mark and g.max_mark

)

select *

from (

    select *

    from aa

    where grade >= 8

    order by grade desc , name asc

) bb

UNION 

select *

from (

    select case when grade <= 7 then name = null end , grade, marks

    from aa

    where grade between 1 and 7

    order by grade desc, marks asc

) cc

sql

답변 1

1

송혜정

안녕하세요 이명아님, 답변 드립니다.

질문에 올려주신 쿼리를 실행해보면, 결과값 정렬이 의도한 대로 출력되지 않는 것을 보실 수 있습니다.
union 사용 시 최종 결과에 대해 정렬이 필요한 경우, order by를 마지막에 사용해주셔야 합니다. 따라서 작성하신 쿼리의 마지막에 order by grade desc, name, marks 를 추가해주시면 정답과 결과가 일치합니다.

참고: [MySQL] ORDER BY and LIMIT in Unions
"
To use an ORDER BY or LIMIT clause to sort or limit the entire UNION result, parenthesize the individual SELECT statements and place the ORDER BY or LIMIT after the last one:
"

답변이 도움이 되었길 바라며, 추가 질문이 있으실 경우 언제든 남겨주세요 :)

순위 함수 연습 문제 - 스테디셀러 작가 찾기

0

85

1

문제 내용이 잘못된 것 같습니다.

0

57

2

서브쿼리 질문

0

59

2

[수업질문] 서브쿼리 > null데이터 avg사용 주의

0

72

1

서브쿼리는 언제 작성하는건가요?

0

66

1

안녕하세요 질문드립니다.

0

66

2

Top Earners 문제관련 질문

0

96

2

고급반 cheetsheet

0

146

2

196. Delete Duplicate Emails 좋은 코드 질문

0

140

1

a.id = 1과 b.id=1이 없어도 되는 이유

0

125

0

강의 플랫폼

0

197

3

리트코드 177번 function 풀이중 case when 활용을 위한 서브쿼리 구문을 제출 시 검증에 통과되지 않도록 보강된 듯 하네요

0

204

2

ERD 읽는법에 추가 질문 있어요

0

249

1

lead, lag로 풀이할 시 id 값이 존재하지 않는 경우의 오답

0

355

2

사용자정의함수

0

230

1

이 문제 inner join이 이해가 안됩니다.

0

294

1

평균 함수 사용할 때 주의점과 해결법

0

259

1

196. subquery로 풀 때, 궁금한 점

0

382

2

쿼리성능 질문드립니다.

0

312

1

리트코드 highest department salary 문제

0

257

2

The report 문제 order by부분 질문

0

269

2

리트코드 서브쿼리 문제 질문

0

420

1

DEPARTMENT HIGHEST SALARY 서브쿼리 문제 문의

0

235

1

서브쿼리의 활용사례 및 조인관련질문

0

282

1