강의

멘토링

로드맵

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

KoKuMa님의 프로필 이미지
KoKuMa

작성한 질문수

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

4번 문제 풀이

문제와 간접적으로 관련된 질문입니다.

작성

·

171

1

안녕하세요.

문제를 보면 company_code를 order by로 정렬하라고 했습니다. 이 때 정렬 방식을 보면 c1, c2, c3, c100이 아니고

c1, c100, c2, c3인 것을 알수 있습니다. 만약 문제에서

c1, c2, c3, c100 순으로 정렬해 달라고 한다면 어떻게 해야 할까요?

퀴즈

컬럼에 있는 숫자 값들을 모두 더하는 SQL 함수는 무엇일까요?

AVG

COUNT

SUM

MAX

답변 1

2

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

여러 방법이 있을텐데, 저라면 이런 식으로 풀어볼 것 같습니다.

우선 C1, C100, C2, ... 순으로 정렬이 되는 것은 알파벳과 함께 조합되어 있는 값이라서,
데이터 타입이 숫자가 아닌 문자로 되어있기 때문입니다.

숫자 데이터를 기준으로 정렬을 한다면 C1, C2, ..., C100와 같이 정렬이 될 수 있으므로
아래와 같은 순서로 추출한 데이터를 ORDER BY 절에 넣습니다. 
1. company_code의 값에서 문자 'C'를 제외
2. 남은 1, 2, ..., 100과 같은 값의 데이터 타입을 숫자로 변경
쿼리로는 ORDER BY CAST(SUBSTR(company_code, 2) AS DECIMAL) 와 같이 쓸 수 있겠네요!

이 문제를 해결하는 다른 방법들도 있으니 MySQL custom sorting 과 같은 키워드로 검색해 보기를 추천 드립니다.

KoKuMa님의 프로필 이미지
KoKuMa

작성한 질문수

질문하기