본문 바로가기

oracle10

[Programmers] NULL 처리하기(풀이 성공) 문제 다음과 같은 테이블 ANIMAL_INS가 주어진다. 동물의 종, 이름, 성별 및 중성화 여부를 ID 순으로 조회하라. 단, 이름이 없는 동물의 경우 'No name'으로 표시되도록 하라. 내 코드: SELECT ANIMAL_TYPE, NVL(NAME, 'No name'), SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID; Comment: NULL값을 다른 값으로 치환해주는 함수 NVL의 활용 가능 여부를 묻는 문제입니다. NVL은 SELECT 절에서 사용할 수 있으며, NVL(NULL 값이 포함된 column, '치환할 값')으로 씁니다. 2021. 5. 12.
[Programmers] 최솟값 구하기(풀이 성공) 문제 다음과 같은 테이블 ANIMAL_INS가 주어진다. 동물 보호소에 가장 먼저 들어온 동물이 언제 들어왔는지를 조회하라. 내 코드: SELECT DATETIME FROM (SELECT * FROM ANIMAL_INS ORDER BY DATETIME) WHERE ROWNUM=1; Comment: '언제' 들어왔는지를 조회하는 것이므로 DATETIME을 조회해야 합니다. 가장 먼저 들어온 동물을 찾기 위해서는 ORDER BY를 통해 DATETIME을 기준으로 테이블을 정렬하고, ROWNUM으로 첫 번째 값을 꺼내면 됩니다. 하지만 ORDER BY의 실행 순서는 가장 나중이므로, 그냥 썼다가는 엉뚱한 값을 조회할 수 있습니다. 이 때는 FROM 뒤에 괄호를 열어 미리 정렬을 해주는 것으로 순서를 앞당기고,.. 2021. 5. 12.
[Oracle]Weather Observation Station 17(풀이 성공) 문제 아래와 같은 스키마 STATION이 주어진다. 38.7780 보다 큰 LAT_N 중 가장 작은 값에 접근하라. 그리고 소수점 아래 넷째자리까지 표현하라. 내 코드: select round(long_w, 4) from (select * from station where lat_n > 38.7780 order by lat_n) where rownum=1; Comment: from 뒤의 괄호 안에서 미리 조건을 부여하여 스키마를 어느 정도 정돈하는 것이 필요합니다. 우선 38.7780보다 많은 값을 모두 선택한 후, order by를 활용해 오름차순으로 정렬하면 조건에 맞는 값 중 가장 작은 값(우리가 접근해야 하는 값)이 가장 위쪽에 오게 됩니다. 남은 것은 where를 통해 꺼낸 후, round 함수.. 2021. 4. 16.
[Oracle] Top Earners(풀이 성공) 문제 다음과 같은 테이블 Employee가 주어진다. 이중 salary(월급)와 months(근속한 월수)를 곱하면 지금까지 받은 임금을 알 수 있다. 사원들 중 지금까지 가장 큰 임금을 받은 사람은 얼마를 받았는지 그 금액과, 그 임금을 받는 사람의 수를 출력하라. Sample Input : Sample Output : 69952 1 내 코드: select * from (select months*salary, count(months*salary) from employee group by months*salary order by months*salary desc) where rownum=1; Comment: group by의 활용법과 order by의 실행 순서를 잘 고려하여야 하는 문제입니다. grou.. 2021. 4. 12.