• 카테고리

    질문 & 답변
  • 세부 분야

    데이터 분석

  • 해결 여부

    미해결

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

21.11.19 11:31 작성 조회수 100

1

안녕하세요.

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

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

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

답변 1

답변을 작성해보세요.

2

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

우선 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 과 같은 키워드로 검색해 보기를 추천 드립니다.