본문 바로가기

Study/class note

문제1. SQL / 통신사, 통신사별 최소나이 출력하기

[코드를 쓴 상황]

emp테이블에 등록된 학생들의 정보로 통신사와 통신사별 이용자의 최소 나이 출력하시오. 

단, 통신사는 sk telecom이용자는 sk,skt,SK,SKT 등으로 기재되어 있음.

 

[내가 쓴 코드]

select decode(lower(telecom), 'kt', 'kt','lg','lg','sk'), min(age)
 from emp
 group by decode(lower(telecom), 'kt', 'kt','lg','lg','sk');

 

[다른 사람이 쓴 코드]

-- 선생님이 쓴 코드
select decode(lower(telecom), 'skt','sk',lower(telecom)), min(age)
 from emp
 group by decode(lower(telecom), 'skt','sk',lower(telecom));

-- 다른 학생이 쓴 코드
select replace(lower(telecom),'skt','sk'), min(age)
 from emp
 group by replace(lower(telecom),'skt','sk');

 

[해결]

1. 내가 쓴 코드에서는 kt, lg, skt 이외의 통신사도 skt로 출력됨 > 잘못된 데이터를 잡아내지 못함

2. 내가 쓴 코드는 불필요하게 길다. 조건값을 많이 넣으면 오타발생하여 오류날 가능성 있음.

 

[유의해야할 점]

1. 데이터를 일괄적으로 분류하기 위해 decode, replace 함수를 이용

반응형