인프런 커뮤니티 질문&답변
문제와 간접적으로 관련된 질문입니다.
작성
·
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
지식공유자
여러 방법이 있을텐데, 저라면 이런 식으로 풀어볼 것 같습니다.
우선 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 과 같은 키워드로 검색해 보기를 추천 드립니다.





