본문 바로가기

Database16

[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.
[Oracle]The Blunder(풀이 성공) 문제 사원들의 이름과 ID, 월급을 담은 스키마 EMPLOYEES가 있다. 사만다는 이 스키마를 작성하며 사원들의 평균 월급을 구하려 한다. 하지만 그녀는 작성 중 키보드의 0키가 망가진 것을 알지 못했다. 후에 이를 알아차린 그녀는 잘못 입력한 월급의 평균과 원래 입력했어야 할 월급 평균의 차를 구해 수정하고자 한다. 원래 입력했어야 할 월급의 평균-잘못 입력한 월급 평균을 구하여라. 단, 소수점이 있을 경우 정수로 올림한다. Sample Input : Sample Output : 2061 내 코드: select ceil(avg(salary)-avg(to_number(replace(to_char(salary), '0', '')))) from employees; Comment: Salary 컬럼에서 잘못.. 2021. 4. 7.
[Oracle]Average Population of Each Continent(풀이 성공) 문제 두 스키마 CITY, COUNTRY가 주어진다. 두 스키마에 공통적으로 포함되는 모든 CONTINENT를 추출하고, 각 CONTINENT 별 평균값을 구하되 소수점은 버리고 출력하라. 단, CITY.COUNTRYCODE와 COUNTRY.CODE는 서로 매칭된다. 내 코드: select ct.continent, trunc(avg(c.population)) from city c inner join country ct on c.countrycode=ct.code group by continent; Comment: 두 스키마에 모두 포함되는 continent만을 출력해야 하므로 left join이 아닌 inner join을 사용해야 합니다. 또한 소수점 이하를 버리므로 반올림하는 round 함수가 아닌 t.. 2021. 4. 1.