본문 바로가기

배우기/복습노트[oracle sql]

[실습문제] 2023. 10. 31.(화) 문제 풀이(5문제)

728x90
반응형

31일에 왜 실습문제를 복습 안했는지 기억이 안나지만 누락되어있길래 오늘 다시 풀어보며 추가한다.

 

실습문제 1. student 테이블에서 1976년 1월에 태어난 학생의 이름, 학년, 생년월일을 출력하여라.

 

예전 거라 그런지 쉽게 풀이가 가능했다.

 

 

실습문제 2. professor 테이블에서 입사연도가 2000년보다 이른 경우 pay를 20% 인상, 2000년도 이후에는(2000년도 포함) 8% 인상하여 인상된 연봉과 함께 이름, 입사연도를 출력하여라

 

 

실습문제 3. professor 테이블에서 입사연도별 최대급여, 최소급여, 평균급여를 출력하여라. 단 입사연도는 1980, 1990, 2000, 2010년대로 표현하여라.

당시에 내가 풀지 못한 문제이다. 지금 차근차근 생각해보며 풀어봐야겠다.

 

또 풀지 못했다. 선생님이 문제가 풀리지 않으면 데이터를 계속 쳐다보라고 했는데 왜 그렇게 말씀하셨는지 이해가 간다.

데이터를 가지고 정렬을 이리저리 하다보면 어떠한 패턴이 눈에 들어오는 경우가 있었고 이 경우도 그랬던 것 같다.

year를 정렬해서 보면 1980년대는 1의자리가 다 0으로 바뀌면 그 자료대로 group by하면 묶이는 것을 발견할 수 있었을 것이다.

먼저 년대를 추출하는 두 가지 방법의 코드이다.

 

이런식으로 나타내면 년대가 추출된다. 그럼 그 년대별로 group by하면 끝날것이다.

 

 

728x90

 

 

실습문제 4. emp테이블을 사용하여 연봉기준 등급을 아래의 기준에 맞게 표현하세요.

 2000미만 'C', 2000이상 3000이하 'B', 3000초과 'A'
 단, decode문, case문 각각 작성

 

 

실습문제 5. emp 테이블을 이용하여 각 부서별 직원수를 출력하되 다음과 같은 형식으로 작성하여라.

 10_직원수   20_직원수  30_직원수       ← 컬럼명
 -------------- --------------- ---------------
        3                 5                6                ← 실제 count 결과

 

 

처음 이 문제를 접했을 땐 풀지 못하였고, 오늘 다시 풀었을 때 풀이에 성공하였다.

먼저 접근을 10번 부서는 1번으로 표시, 20번 부서는 2번으로 표시, 3번 부서는 3번으로 표시하였고(전부 1번으로 표시하여도 풀이에는 무방) 그냥 그 전부를 count 하였다.

group by하면 선생님이 지정해준 형식으로는 출력되지가 않아서 조금 헷갈렸던 문제였다.

 

 

누락된 복습 끝.

728x90
반응형